字符串常量
字符串常量:
字符常量 : 由一对单引号括起来的单个字符,如'a', 'B'
字符串常量: 由一对双引号括起来的多个字符的序列,如"a",“I Love u”
字符串在本质上是多个字符组成的字符数组,C语言规定,在每个字符串常量的结尾,系统会自动加一个字符 '\0' ,作为该字符串的结束标识符,根据是否是 '\0' 判断字符串是否结束。
PS: '\0' 是系统自动加上的,不是人为添加的。
比如字符串“a”,看起来它只有1个字符,但是结尾有 '\0' ,所以这个字符串在内存中占2个字节。
int main(void)
{
printf("%d \x20", sizeof(" ")); //空格占1个字符,所以字符串所占长度为2
printf("%d \x20", sizeof("a")); //a占1个字符,所以字符串所占长度为2
printf("%d \x20", sizeof("你好")); //每个中文占2个字符,所以字符串所占长度为5
return 0;
}
PS: 操作符sizeof是取得字符串所占内存空间的总长度,strlen是取得字符串的有效长度
在C语言中,字符串怎么存储:
1 通过字符数组存储:
①字符数组的定义:
char name[7];
②字符数组的初始化:
定义时初始化:char a[] = “Richard'; //推荐这种写法,系统会自动加一个字符 '\0' ,作为该字符串的结束标识符。
定义后初始化:
int main(void)
{
char a[8]; //先定义数组的话,数组a的大小必须先给出
a[0] = 'R'; a[1] = 'i'; a[2] = 'c'; a[3] = 'h'; a[4] = 'a'; a[5] = 'r'; a[6] = 'd';
printf("a = %s\n", a);
system("pause");
return 0;
}
运行结果如图:
//系统只要没遇到 '\0',就认为该字符串没有结束,直到遇到 '\0'为止。
PS: 前面提到系统会在字符串的最后自动添加结束标识符 '\0' ,但是这样给字符数组一个个赋值时,系统不会自动添加 '\0',必须手动添加。
2 通过字符指针存储:
char *p = "Hello World";