我无法理解如何声明指针的代码。
#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 **);
^
这些警告意味着什么?请问您能解释一下如何在上面的代码中使用指针吗?
答案 0 :(得分:5)
fp
声明为FILE*
,而不是FILE**
。
FILE*
是&#34;指向FILE
&#34;。
FILE**
指向&#34;指针FILE
&#34;&#39;。
在openfile()
中,它想要更新FILE*
数据,因此请求指向FILE*
的指针。
总之,您应该使用openfile("Myfile.txt",&fp);
来使用openfile()
。
这意味着您应该使用&
运算符获取fp
的地址,以便fp
更新openfile()
。