在C语言中,字符串常量是指用一对双撇号括起来的字符序列。如
“Hello World” , “CHINA" , "a"
C规定: 在每一个字符串的结尾加一个”字符串结束标志“,以便系统据此判断字符串是否结束。
C规定:以字符"空操作字符“(即不引起任何控制动作,不同于空格字符)作为字符串的结束符标志,TA的ascii值为0,表示为'\0',也是一个不可显示的字符。
C语言中,字符串变量是以字符数组存储的(不是以字符指针或者字符指针数组存储的),如:
char cstr[ ] = "Hello World"; <=> char cstr[12] = "Hello World";
H | e | l | l | o | W | o | r | l | d | \0 |
所占栈内存不是11个字节,而是12个字节,最后一个字节为‘\0',编译器自动加上去的。
另外也可以这样初始化一个字符串变量:
char cstr[ ] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '\0' }
strcpy strlen等等c函数都是按’\0‘ 来判断c串是否结束的,比如:
strlen(cstr) = 13;
如果:char cstr_2[ ] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd' }, 或者 char cstr_2[11] = "Hello World";
strlen(cstr_2) = 不确定
因为这两种赋值的结果是cstr_2都不是c串了,而是字符数组了,说明c串只是字符数组中的一种而已。