为什么我从以下代码获得结果6,然后是8?我搜索了帖子,但无法找到我的问题的完全匹配。感谢。
#include <stdio.h>
void getSize(const char *str)
{
printf("%d\n", sizeof(str)/sizeof(char));
}
int main()
{
char str[]="hello";
printf("%d\n", sizeof(str)/sizeof(char));
getSize(str);
}
答案 0 :(得分:7)
在getSize()
函数中,str
是一个指针。因此sizeof(str)
会返回指针的大小。 (在这种情况下为8字节)
在main()
函数中,str
是一个数组。因此,sizeof(str)
会返回数组的大小。
这是数组和指针之间的细微差别之一。
答案 1 :(得分:2)
不同类型,不同尺寸。
在main
中,str
是char[6]
。在getSize
str
中有一个const char *
。指针是(在64位平台上)8字节,所以(给定sizeof(char) = 1
):
6/1 = 6
8/1 = 8