直接看一个试题:
char str[] = "abcdef";
char *s = "abcdef";
请问在32位机器上,sizeof(str),strlen(str),sizeof(s)的结果分别是?
正确答案:7,6,4
解释:
sizeof(str)=7,这是因为计算机会自动为字符串的末尾加上\0这个标识符,因此为7。
strlen(str)=6,strlen是求字符串长度的函数,在遇到\0这个标志时结束,不包含结束符,因此为6。
sizeof(s)=4,这里s仅仅是一个指向char型的指针变量,指针变量本身只是一个地址,其所占的字节数,永远等于操作系统的位数,在32位操作系统里,就是4个字节。