gpt4 book ai didi

c - 在 C 中使用 FILE 变量的地址和 FILE * 有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 16:06:45 24 4
gpt4 key购买 nike

给定以下简短示例

FILE *p = fopen("foo.txt", "r");
FILE f = *p;

int i;
fscanf(p, "%i", &i); // works just fine
fscanf(&f, "%i", &i); // segmentation fault

我已经阅读了一些关于 FILE 的内容, FILE *以及实际的结构类型 _IO_FILE , 但我不太清楚是什么导致了第二次调用 fscanf 时出现段错误.

除了p&f包含不同的地址,除非涉及到这一点(我认为是),&f 之间有什么区别?和 p在这种情况下?

最佳答案

C 标准(C99 7.19.3/6,C11 7.21.3/6)说:

The address of the FILE object used to control a stream may be significant; a copy of a FILE object need not serve in place of the original.

所以你已经被警告了。

关于c - 在 C 中使用 FILE 变量的地址和 FILE * 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27650329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com