sizeof 字符数组

发布于 2024-12-29 13:38:37 字数 309 浏览 2 评论 0原文

为什么我从以下代码中得到结果 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

山色无中 2025-01-05 13:38:37

getSize() 函数中,str 是一个指针。因此,sizeof(str) 返回指针的大小。 (在本例中为 8 个字节)

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

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

In your getSize() function, str is a pointer. Therefore sizeof(str) returns the size of a pointer. (which is 8 bytes in this case)

In your main() function, str is an array. Therefore sizeof(str) returns the size of the array.

This is one of the subtle differences between arrays and pointers.

琉璃梦幻 2025-01-05 13:38:37

不同的类型,不同的尺寸。

main中,str是一个char[6]。在 getSize 中,str 是一个 const char *。指针(在 64 位平台上)为 8 字节,因此(假设 sizeof(char) = 1):

6/1 = 6
8/1 = 8

Different types, different sizes.

In main, str is a char[6]. In getSize str is a const char *. A pointer is (on a 64-bit platform) 8-bytes, so (given that sizeof(char) = 1):

6/1 = 6
8/1 = 8
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文