如何知道C中数组中元素的确切数量?

时间:2015-08-21 20:01:35

标签: c arrays

如果我提到

render()

我想知道它中存在的元素数量而不是它的大小,我应该使用哪些命令?

4 个答案:

答案 0 :(得分:7)

对于数组,大小始终是元素数乘以每个元素的大小。一旦定义,它们(元素或大小的数量)都不会变化。

如果你想找出数组中存在的有意义的(对你)元素,那么你需要在某处有sentinel value(从而标记有效数据输入的结束) ),并使用循环,您需要自己计算有效元素。

答案 1 :(得分:2)

int array[3] = {1,2}; //1,2,0

由于默认情况下将数组元素初始化为0,因此可以将非零值计算为元素数。

但是,请考虑

int array[4] = {0,1,2}; //0,1,2,0

您需要一种方法来确定哪些零是有意义的零。也许,最后的零是无用的。

但请考虑

int array[4] = {0,1,0}; //0,1,0,0

array[2]的0是故意的。不同的球赛。这一切都取决于你确定哪个零重要。

答案 2 :(得分:1)

您应该实现某种计数器来跟踪添加它们时当前元素的数量。为每个元素分配了内存,因此几乎不可能尝试确定填充了多少内存插槽。

答案 3 :(得分:1)

只是不要给它大小,比如:

int foo[]={1,2,3,4,5};

然后编译器会将foo分配给刚好足以保存初始化列表中的值,所以当你执行sizeof(foo)/sizeof(foo[0])它会做你想要的,只要数组没有衰减到一个指针。与硬编码100相比,它实际上节省了大量内存。