找到静态数组和动态数组中元素数量的最快方法是什么?
答案 0 :(得分:10)
无法找到动态创建的数组中的元素数量。对于非动态数组,您可以使用sizeof(array)/sizeof(type)
。但是,这并不像看起来那么有用:
void f( int a[] ) {
// sizeof(a) will be the size of a pointer, probably 4
}
int main() {
int a[100];
// sizeof(a)/sizeof(int) will be 100
f( a );
}
这是因为数组在传递给函数时会衰减为指针。因此,在这两种情况下,您可能需要记住数组的大小并将其作为单独的参数传递给函数。因此,对数组求和的函数(例如)将如下所示:
int sum( int a[], int n ) {
int total = 0, i;
for ( i = 0; i < n; i++ ) {
total += a[i];
}
return total;
}