看来你的印象是array[10]
指定下整个数组 - 它不。它指定array
的第11个元素,它不存在(假设您声明为some_type array[10]
)。因为在C中,名称是一个数组,因此您需要将fwrite()作为array
的第一个元素的地址,这恰好就是array
(或&array[0]
),因为在C中,数组在表达式中使用时,是其第一个元素的地址(除了sizeof
运算符)。
编译器具有关于数组类型和元素类型的完整信息,因此它可以检测何时在需要指针的位置编写int
类型的表达式。
有一种方法来fwrite()将一个完整的阵列,独立大小和元件类型的,只使用阵列标识符:
fwrite (array, sizeof *array, sizeof array/sizeof *array, file);
其中sizeof *array
计算结果为元件的尺寸和sizeof array/sizeof *array
评估为的数量数组中的元素。请注意,这适用于数组,只适用于,不适用于指针。同样可以用
fwrite (array, sizeof array, 1, file);
或
fwrite (array, 1, sizeof array, file);
它基本上是你喜欢的风格问题来实现;它们都是等效的,并且将以相同的速度执行。
你能告诉我们'array'的声明吗? – Jens 2013-02-26 09:07:03