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);
}
why do I get results 6, and then 8 by from the following code? I searched through the posts but cannot find an exact match of my question. Thanks.
#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);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在
getSize()
函数中,str
是一个指针。因此,sizeof(str)
返回指针的大小。 (在本例中为 8 个字节)在
main()
函数中,str
是一个数组。因此,sizeof(str)
返回数组的大小。这是数组和指针之间的细微差别之一。
In your
getSize()
function,str
is a pointer. Thereforesizeof(str)
returns the size of a pointer. (which is 8 bytes in this case)In your
main()
function,str
is an array. Thereforesizeof(str)
returns the size of the array.This is one of the subtle differences between arrays and pointers.
不同的类型,不同的尺寸。
在
main
中,str
是一个char[6]
。在getSize
中,str
是一个const char *
。指针(在 64 位平台上)为 8 字节,因此(假设sizeof(char) = 1
):Different types, different sizes.
In
main
,str
is achar[6]
. IngetSize
str
is aconst char *
. A pointer is (on a 64-bit platform) 8-bytes, so (given thatsizeof(char) = 1
):