【发布时间】:2014-12-26 18:24:40
【问题描述】:
我使用 malloc 和以下代码行创建了一个数组:
int* array = (int*)malloc(12*sizeof(int));
我尝试通过以下方式获取尺寸:
int size = sizeof(array)/sizeof(int);
这会返回 2,而不是 12(我知道 sizeof(array[0] 更通用。) 令人困惑的是(对我而言),当我使用
创建一个数组时int array[12]
上面的代码行返回正确的大小:12。
此外,我可以用 12 个整数填充 int* 数组而不会出现分段错误,我不明白大小是否为 2。
谁能告诉我我做错了什么/ 如何获取在 c 中使用 malloc 初始化的数组的大小?
对不起,如果这是基本的,我环顾四周,找不到答案。
感谢您的宝贵时间。
【问题讨论】:
-
第一个
array不是数组,而是指向int类型元素的指针。第二个是! -
某处很可能有重复,但一般的答案是
sizeof(array)在第一种情况下给你指针的大小,不是数组的大小;没有办法仅根据指针来确定数组的大小。
标签: c