我尝试了这段代码。您可以看到问题是空元素为零。因此,我尝试进行检查,但事实是我可以将0作为元素。
int main()
{
int array[10] = {1, 2, 0, 3, 4};
printf("%d\n", sizeof(array)/ sizeof(*array)); // This is the size of array
int i = 0;
while(array[i] != 0 && i < 10) {
i++;
};
printf("%d\n", i);
return 0;
}```
首先将数组设置为输入范围之外的数字。就像一个负数。
for(i = 0;i < 10;i++)
array[i] = -1;
或将其设置为INT_MAX
或INT_MIN
你不能。 int array[10]
将始终创建一个由10个元素组成的数组,您不能问编译器已分配了哪些元素。
您可以做的是int array[] = {1, 2, 0, 3, 4}
,然后编译器将为您推断元素的数量,您将获得sizeof(array)/ sizeof(*array) == 5