2010-04-05 70 views
6

找到静态数组和动态数组中元素数量的最快方法是什么?静态数组和动态数组中元素的数量

+0

可能重复:http://stackoverflow.com/questions/851716/count-repeated-elements-in-an-array-in -c – 2010-04-05 09:40:50

+1

可能的重复:http://stackoverflow.com/questions/2347766/how-many-elements-are-full-in-ac-array – 2010-04-05 09:41:13

回答

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; 
} 
+6

通常会使用'sizeof(array)/ sizeof(array [0] )”。此外,可能会有非标准的,不可移植的方式来查找动态数组中的元素数量,但最好在创建时单独存储大小,并将其传递给需要知道大小的任何内容。 – 2010-04-05 09:42:17

+0

@丹是的,没有想到那里打字 - 谢谢。 – 2010-04-05 09:46:21

+1

@Georg请不要编辑我的答案的技术内容 - 我编写了我非常有意识地发布的代码。如果你认为它可以改进,发表评论或张贴你自己的答案。 – 2010-04-05 19:42:55