如果我提到
render()
我想知道它中存在的元素数量而不是它的大小,我应该使用哪些命令?
答案 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
相比,它实际上节省了大量内存。