这个问题已经在这里有了答案:
9年前关闭。
基本上,我做到了...
char *str1 = "Sanjeev";
char str2[] = "Sanjeev";
printf("%d %d\n",strlen(str1),sizeof(str1));
printf("%d %d\n",strlen(str2),sizeof(str2));
我的输出是
7 4
7 8
我无法给出
sizeof str1
为什么是4的原因。请解释一下两者之间的区别。 最佳答案
因为sizeof可以为您提供数据类型的大小(以字节为单位)。 str1的数据类型为char *,即4个字节。相反,strlen为您提供了不包含null终止符的char字符串长度,因此为7。sizeof str2是8个字节的char数组,这是包含null终止符的chars数量。
请参阅C-FAQ中的此项:http://c-faq.com/~scs/cclass/krnotes/sx9d.html
试试这个:
char str2[8];
strncpy(str2, "Sanjeev", 7);
char *str1 = str2;
printf("%d %d\n",strlen(str1),sizeof(str1));
printf("%d %d\n",strlen(str2),sizeof(str2));
关于c++ - 对于基于String的Pointer和Array的strlen和sizeof不同的答案,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5925927/