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()将文件打开到xy中,则应使用:

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


}

换句话说,您需要将指针的地址xy传递到函数中。
由于您的代码现在是这样的,对openUpNow()的调用不会做任何事情(并泄漏文件句柄),因为指针是按值传递的。

07-24 09:37
查看更多