这个问题不难,但是很容易忽略,导致混淆,如下:
“AB”这个字符串的长度是多少呢?
“AB”这个字符串的所占内存长度是多少?
赋值给字符数组后会不会改变呢?
char a[] = “AB”; 那么a的字符长度是多少?a的内存长度是多少?
代码测试:
char a[] = "AB";int L = strlen("AB");int M = sizeof("AB");printf("\t字符串字符长度:%d\n\t字符串内存长度:%d\n",L, M);L = strlen(a);M = sizeof(a);printf("\t字符数组字符长度:%d\n\t字符数组内存长度:%d\n",L, M);
运行结果:
strlen求字符串的字符个数或长度
sizeof测字符串的内存长度,char占一个字节,所以 A B \0,是三个字节

总结:一个字符串或者字符数组的长度是多少,要问清楚这个长度是字符个数还是内存的长度,字符长度就是所直观看到的字符个数,几个就是几个。
而内存长度就要比字符个数多1,通常以\0作为结束标志,保存在字符串的末尾了。
















