为什么数组是正确的,但不是计数?

时间:2016-05-26 08:38:37

标签: c arrays

MasterdetailPage

显然,数组中有7个数字,为​​什么说100?

3 个答案:

答案 0 :(得分:3)

不,数组有100个元素。您可能只写了其中一些(20,假设您的fread工作正常),但这不会改变数组大小。

将250ml倒入1L水壶中没有什么不同。壶的尺寸不会因为它没有满而神奇地减少75%。

在任何情况下,您看到的七个数字(实际上一个数字,七位数)与写入数组的内容无关。在大多数情况下,表达式array将衰减到该数组的第一个元素的地址。因此,您看到的数字是所在的数组,而不是它所拥有的数据。

答案 1 :(得分:2)

C中的数组不是动态的。您对数组大小的计算基于其静态类型。它的静态类型实际上是100个元素。

如果您希望系统跟踪实际存在的元素数量,请使用其他语言编写,或使用此信息明确保留变量。

答案 2 :(得分:0)

你说这句话

printf("%i\n", arrays);

输出6421876你声称是7个数字,但它没有按照你的想法行事。您正在将arrays地址传递给printf函数并告诉它int,但结果没有任何用处。

您计算数组大小,是数组中元素的总数,而不是实际读取的元素数。如果您想知道从文件中读取了多少整数,您必须查看fread的返回值,该值告诉您从文件中读取了多少。您要求20,但该文件可能没有包含那么多。

size_t ints_read = fread(arrays, sizeof(int), 20, fp);