gpt4 book ai didi

c - 文件 I/O 代码中的指针声明

转载 作者:行者123 更新时间:2023-11-30 18:24:17 25 4
gpt4 key购买 nike

我无法理解这段代码如何声明指针。

#include <stdio.h>

void openfile(char *, FILE **);
int main()
{
FILE *fp;
openfile("Myfile.txt",fp);

if (fp == NULL)
printf("Unable to open file..\n");

fclose(fp);
return 0;

}

void openfile(char *fn, FILE **f)
{
*f = fopen(fn,"r");
}

当我运行上面的程序时,我收到 2 个警告...

file.c:9:3: warning: passing argument 2 of ‘openfile’ from incompatible pointer type [enabled by default]
openfile("Myfile.txt",fp);
^
file.c:3:6: note: expected ‘struct FILE **’ but argument is of type ‘struct FILE *’
void openfile(char *, FILE **);
^

这些警告是什么意思?请您解释一下上面代码中如何使用指针?

最佳答案

fpFILE*正如所声明的那样,不是 FILE** .

FILE*是“指向 FILE 的指针”。

FILE**是“指向“指向FILE”的指针”。

openfile() ,它想要更新FILE*数据,因此指针指向 FILE*已请求。

总之,您应该使用 openfile("Myfile.txt",&fp);使用openfile() .

这意味着您应该使用&运算符获取fp的地址用于更新fpopenfile() .

关于c - 文件 I/O 代码中的指针声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42545730/

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