sizeof表示字符数组

时间:2012-01-27 22:49:11

标签: c arrays character sizeof

为什么我从以下代码获得结果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);
}

2 个答案:

答案 0 :(得分:7)

getSize()函数中,str是一个指针。因此sizeof(str)会返回指针的大小。 (在这种情况下为8字节)

main()函数中,str是一个数组。因此,sizeof(str)会返回数组的大小。

这是数组和指针之间的细微差别之一。

答案 1 :(得分:2)

不同类型,不同尺寸。

main中,strchar[6]。在getSize str中有一个const char *。指针是(在64位平台上)8字节,所以(给定sizeof(char) = 1):

6/1 = 6
8/1 = 8