如何查找整数数组的大小

时间:2010-05-05 12:54:11

标签: c arrays

如何在C中找到整数数组的大小。

任何可用的方法,无需遍历整个数组一次,以找出数组的大小。

4 个答案:

答案 0 :(得分:80)

如果数组是全局变量,静态变量或自动变量(int array[10];),则sizeof(array)/sizeof(array[0])有效。

如果它是动态分配的数组(int* array = malloc(sizeof(int)*10);)或作为函数参数(void f(int array[]))传递,那么在运行时无法找到它的大小。你必须在某处存放大小。
请注意,即使对于第二种情况,sizeof(array)/sizeof(array[0])编译也很好,但它会默默地产生错误的结果。

答案 1 :(得分:4)

如果数组是静态分配的:

size_t size = sizeof(arr) / sizeof(int);

如果数组是动态分配的(堆):

int *arr = malloc(sizeof(int) * size);

其中变量大小是arr的维度。

答案 2 :(得分:3)

Windows中的

_msize(array)或Linux中的malloc_usable_size(array)应适用于动态数组

两者都位于malloc.h中,并且都返回size_t

答案 3 :(得分:-1)

int len=sizeof(array)/sizeof(int);

应该有效。