gpt4 book ai didi

c - 为什么我总是得到8?

转载 作者:太空宇宙 更新时间:2023-11-04 05:05:09 25 4
gpt4 key购买 nike

char *c = (char *)malloc(30*sizeof(char));
printf("%lu \n",sizeof(c));

在上面的代码中,我尝试打印“c”的大小。无论我在代码中给出什么数字而不是“30”,我得到的 sizeof(c) 都是 8。

问题是什么?如何确定数组的大小?

数组的长度和大小是否相同?

最佳答案

目前您要求的指针大小在 64 位机器上是 8 个字节。由于这是一个 malloc 而不是真正的数组,您无法检索通过 c 分配的缓冲区的大小。

如果 c 声明为

char c[30];

你可以确定尺寸

size_t size = sizeof(c)/sizeof(c[0])

但老实说,如果我必须这样做,我只会#define 数组大小,即使大小计算会在编译时被删除。在我看来,它使代码更清晰。

关于c - 为什么我总是得到8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28454612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com