如何查找整数数组的大小

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

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

如果数组是全局,静态或自动变量( int array[10]; ),那么sizeof(array)/sizeof(array[0])可以工作。

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

如果数组是静态分配的:

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

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

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

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

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

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

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

应该管用。