FILE*f初始化为C++中的内容?

adi*_*c21 0 c++ visual-studio-2010

我想选择是否将结果写入文件,所以我的文件名为fnm,如果是空白("")我将不会创建/写入文件.基本上我有:

FILE* f;

if(fnm!=""){
//open file for writing
    f = fopen(fnm.c_str(), "a+");
}

/*do some other stuff*/

for(int idx=0;idx<n;idx++){
    printf("%d\t\t%d\t\t%d\n", k, idx, A[idx]);
    if(f!=NULL){
        fprintf(f,"%d\t\t%d\t\t%d\n", k, idx, A[idx]);
    }
}

if(f!=NULL){
    //close the file
    fclose(f);
}
Run Code Online (Sandbox Code Playgroud)

现在,f实际上并没有NULL在声明时初始化FILE* f;.如果我手动初始化它FILE* f=NULL;,它工作正常,所以这主要是我对默认初始化感到好奇.我之前用谷歌搜索过,但答案是针对C的,他们说它初始化为NULL.

Jer*_*fin 7

这取决于.

如果在f外部定义任何函数,那么它将被初始化为空指针.

如果f在函数内部定义,那么它将被初始化为垃圾.

在C和C++中也是如此.