对于以下代码:

char a[] = "Apple";
char *s[] = {"Apple"};
printf("%d %d\n", sizeof(a), sizeof(s[0]));

输出为:
6 4

有人能告诉我为什么sizeof()会给出不同的输出吗?
编辑:我本来想输入sizeof(),但改为输入strlen()。我也为此道歉。我现在已经编辑了声明。

最佳答案

sizeof(a)是数组的大小,它包含终止符和5个可打印字符。
strlen(s[0])给出字符串的长度,不包括终止符,因为这是指定要执行的操作。
更新:strlen是指针的大小。如果只给一个指向它的指针,就无法确定数组的大小。

关于c++ - sizeof()运算符的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24805519/

10-11 19:42
查看更多