C中的恐惧指针

fread pointer in C

我声明了一个非指针变量用作我在 C 中的 fread 函数的缓冲区。fread 指定缓冲区应该是一个指针,我使用了 & 符号指向我的变量 buffer 的地址(如果我的逻辑是正确的)。我想知道,使用 & 指向普通变量的地址是否是个好主意。我不确定这种做法是否是我应该避免的 'bad' 事情/习惯。非常感谢。

int16_t buffer;

fwrite(&buffer, (size_t) sizeof(int16_t), (size_t) 1, output);

if it's a good idea to use & to point to the address of a normal variable.

是 - 在 binary 模式下打开文件时,这是一个好主意,也是 C 中的常见用法。

最好也添加错误检查、对象的大小(而不是类型)并删除不必要的转换。

int16_t buffer;
...
size_t wcount = fwrite(&buffer, sizeof buffer, 1, output);
if (wcount != 1) Handle_Error();

或者使用数组。

#define N 42
int16_t buf[N];
... 
//  Here, array `buf` converts to the address of the first element.
//                     vvv
size_t wcount = fwrite(buf, sizeof buf[0], N, output);
if (wcount != N) Handle_Error();