Var*_*der 46
如果在编译时已知数组的大小,则可以使用结构大小来确定元素的数量.
struct foo fooarr[10];
for(i = 0; i < sizeof(fooarr) / sizeof(struct foo); i++)
{
do_something(fooarr[i].data);
}
Run Code Online (Sandbox Code Playgroud)
如果在编译时不知道,则需要在某处存储大小或在数组末尾创建特殊的终止符值.
Dav*_*ler 22
您可以在某处存储大小,或者您可以使用具有您用作标记的特殊值集的结构,就像'\ 0'表示字符串结尾的方式相同.
Ant*_*oMO 13
这取决于.如果它是一个动态分配的数组,也就是你创建它调用malloc,那么就像其他人建议你必须保存数组的大小/元素的数量或者有一个sentinel(一个具有特殊值的结构,这将是最后一个).
如果它是一个静态数组,你可以调整它的大小/一个元素的大小.例如:
int array[10], array_size;
...
array_size = sizeof(array)/sizeof(int);
Run Code Online (Sandbox Code Playgroud)
请注意,除非它是全局的,否则这只适用于初始化数组的范围,因为如果将它传递给另一个函数,它会被衰减为指针.
希望能帮助到你.