-2
プログラミングが数ヶ月前に開始されたので、私の質問によって気分が悪くなる可能性があります(申し訳ありません)。ファンクションへのファイルポインタの受け渡し
私はこのような機能から、私のあるtest.txtファイルに何かを印刷したいとしましょう:
メイン:
int main()
{
FILE *fp;
test(fp);
...
}
が機能:
void test(FILE *fp)
{
fp = fopen("test.txt","w"); // it crashed here
...
}
VSでのデバッグは言います: "変数 'fp'は初期化されずに使用されています。
は、その後、私は私の主な機能の最初の行を変更することを決めた:
FILE *fp = NULL;
そして突然、すべてが正常に動作します。
誰かがこの現象を説明できますか?
あなたが式を評価するとき、あなたは何をやっているされて初期化されていない値を(読むために未定義の動作であるので、それは問題ではありません。 'test(fp)')。 –
コードは実際には意味をなさないが、未定義の動作は問題ではなく*症状*であることをもう一度示している。 –
問題は、テストが戻ったときに変数fpがfopen呼び出しによって割り当てられた値を保持しないということです。したがって、後でメインで使用すると問題が発生します – bruceg