void openUpNow(FILE *x, FILE *y)
{
x = fopen("xwhatever", "r");
y = fopen("ywhatever", "r");
}
int _tmain(int argc, _TCHAR* argv[ ])
{
FILE *x, *y;
openUpNow(x, y);
}
警告C4700:使用了未初始化的局部变量“x”
警告C4700:使用了未初始化的局部变量“y”
补救措施?
最佳答案
我不认为那是你想做的。
假设您希望openUpNow()
将文件打开到x
和y
中,则应使用:
void openUpNow(FILE **x, FILE **y)
{
*x = fopen("xwhatever", "r");
*y = fopen("ywhatever", "r");
}
int _tmain(int argc, _TCHAR* argv[ ])
{
FILE *x, *y;
openUpNow(&x, &y);
// do stuff
}
换句话说,您需要将指针的地址
x
和y
传递到函数中。由于您的代码现在是这样的,对
openUpNow()
的调用不会做任何事情(并泄漏文件句柄),因为指针是按值传递的。