字符串和字符数组

Posted zj-studyrecoding

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串和字符数组相关的知识,希望对你有一定的参考价值。

字符串分为字符串常量和字符串变量:

  字符串变量(字符数组):c中没有字符串的数据类型,只能用字符数组模拟(即用字符数组表示字符串);

    注:字符数组不一定是字符串(因为字符数组中可以不含\'\\0\');而字符串一定是一个字符数组(包含0元素也可以是一个字符数组)

  字符串常量:就是用“”括起来的一串字符;如“hello”

 

  \'\\0\':0元素,对应的整数为0,当字符数组中有0元素时,就可以当成字符串来使用。即字符串是以\'\\0\'结束的

  \'0\':字符0.对应的整数为48.

C语言 --- 字符串和字符数组

1. 字符串和字符数组的区别:

  • C语言中没有字符串这种数据类型,可以通过char的数组来代替
  • 字符串一定是一个char的数组,但char的数组未必是字符串
  • 数字0(和字符’\\0’等价)结尾的char数组就是一个字符串,但如果char数组没有以数字0结尾,那么就不是一个字符串,只是普通字符数组,所以字符串是一种特殊的char数组。

2. 数字0,C语言字符串结束标志’\\0’,空格的关系

来段测试代码看下:

#include <iostream>
#include <string.h>
int main(void)

        char str[] = "abcde fghij \\0kl";
        printf("the length of str is %ld\\n", strlen(str));
        printf("the length of str is %ld\\n", sizeof(str));

        printf("空格的ASCII = %d, \\'\\\\0\\'的ASCII = %d\\n", str[5], str[12]);

        printf("%s", str);

        return 0;

输出:
数字0与’\\0’的ASCII值一样,也就是数字0与’\\0’一样,跟空格没任何关系

3. 关于’\\0’的一些特殊点

  • strlen在计算字符串的长度时,遇到’\\0’就结束

  • 字符串与字符数组的差别就在于,字符串结尾是’\\0’,字符数组没有’\\0’

  • %s会接收字符串结束标志’\\0’之前的所有字符,‘、0’之后的就不再接受

  • char str[] = “hello”; //strlen(str) = 6,字符串常量会在结尾自动加’\\0’
    char str[] = ‘h’, ‘e’, ‘l’, ‘l’, ‘0’;; //strlen(str) = 5

  • strcpy是依据’\\0’作为判断结束的

以上是关于字符串和字符数组的主要内容,如果未能解决你的问题,请参考以下文章

C语言的字符数组和字符串的区别

字符串数组与字符指针的区别

07.字符数组和字符串

C语言 --- 字符串和字符数组

C语言 --- 字符串和字符数组

46 字符数组和字符串