次のプログラムでは、file_ptrはNULLですが、正しく初期化されています。なんで?
#include <stdio.h>
#include <stdlib.h>
void Fopen(const char * restrict filePath, const char * restrict mode, FILE * restrict filePtr);
int main(int argc, char ** argv)
{
FILE * file_ptr = NULL;
Fopen("dummy.dat", "r", file_ptr);
printf("File pointer is %p\n", file_ptr);
exit(0);
}
void Fopen(const char * restrict filePath, const char * restrict mode, FILE * restrict filePtr)
{
if ( (filePtr = fopen(filePath, mode)) != NULL)
printf("file pointer is %p\n", filePtr);
}
コマンドライン:
[jim@cola c++]$ ./readFile
file pointer is 0x740010
File pointer is (nil)
唯一の説明は、FILE*のコピーがFopenに渡されているということです。どうすればポインタをrefで渡すことができますか?