用C计算数组中元素的数量

5 c arrays static-array

在将数组传递给函数后,如何获取C中整数数组中存在的元素数?以下代码不起作用.

size=sizeof(array)/sizeof(array[0]);
Run Code Online (Sandbox Code Playgroud)

Elm*_*ise 15

在C中,您只能获得静态分配的数组的大小,即

int array[10];
size = sizeof(array) / sizeof(int);
Run Code Online (Sandbox Code Playgroud)

会给10.

如果您的数组被声明或传递为int* array,则仅在给定此指针的情况下无法确定其大小.

  • 您未能掌握的是局部变量(包括数组)是在堆栈上动态分配的.因此,数组是静态还是动态分配取决于它是否具有文件或块范围.(当然,也可以通过malloc动态地从堆中分配内存.)不仅可以在堆栈上动态分配数组,而且从C99开始,它们的大小也可以是动态的 - 所谓的可变长度数组(VLA) ). (2认同)

Alo*_*ave 11

您最有可能在传递数组的函数内执行此操作.
数组衰减为指向第一个元素的指针所以你不能在被调用函数内部这样做.

在调用函数之前执行此计算,并将大小作为函数参数传递.