c - fread(&buffer...) 和 fread(buffer...) 有什么区别

标签 c buffer fread

我正在尝试读取一个文件并将其复制到另一个文件。我正在网上查看一些代码,我似乎注意到有些代码是这样声明 fread 的:

fread (buffer, 1, 1000, src)

这样一些

fread (&buffer, 1, 1000, src)

假设我已经声明了这一点:

typedef uint8_t BYTE;
BYTE buffer[1000];

这两者有何不同?

最佳答案

&buffer 返回指向数组的指针。该指针的类型为 BYTE (*)[1000]

当在需要指针的地方使用数组时,它会退化为指向其第一个元素的指针,因此 buffer 相当于 &(buffer[0])在这个情况下。该指针的类型为 BYTE*

两个指针都指向同一个地址。

关于c - fread(&buffer...) 和 fread(buffer...) 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68173954/

相关文章:

java - 在 JavaFx 中使用 JTS 拓扑

java - 使用 Java 创建 .zip 存档的缓冲区大小是多少?

c - 如何使用 neon intrinsic 在 channel 中添加所有 int32 元素

c++ - 如何知道分配给定内存块的是什么?

c - OpenCL - clEnqueueNDRangeKernel - 输出数组变为输入数组

c-客户端服务器套接字编程-发送文件

c - 尽管文件非空,但读取到缓冲区的内容为空

c - fread() 中的 "size"参数指的是什么?

对 C 中的这个输出感到困惑

c - memcpy 期间的段错误