FILE * pFile;
pFile = fopen ("myfile.txt","r");
if (pFile == NULL)
{ some code }
pFile = fopen ("myfile.txt","r")
この場合、何に割り当てられpFile
ますか? 以来pFile
、別の変数のアドレスのみを格納するポインターです。「myfile.txt」は文字列ですよね?それで、pFile =文字列「myfile.txt」を格納する配列のアドレスですか?
FILE * pFile;
pFile = fopen ("myfile.txt","r");
if (pFile == NULL)
{ some code }
pFile = fopen ("myfile.txt","r")
この場合、何に割り当てられpFile
ますか? 以来pFile
、別の変数のアドレスのみを格納するポインターです。「myfile.txt」は文字列ですよね?それで、pFile =文字列「myfile.txt」を格納する配列のアドレスですか?
オブジェクトを指しFILE
ます。詳細は実装に依存し、ユーザーコードには影響しません。ただし、通常は、OS固有のファイル処理メカニズムへのさまざまな参照を含む構造になります。
これは不透明なポインタの例です。
見てみましょう: http://www.cplusplus.com/reference/cstdio/fopen/
ファイルが正常に開かれた場合、関数は、以降の操作でストリームを識別するために使用できる FILE オブジェクトへのポインターを返します。それ以外の場合は、ヌル ポインターが返されます。
FILE
これは、OSがユーザーに代わってファイルにアクセスするために必要なすべての情報を含む構造体へのポインターです。
fopen
C++では使用しないでください。代わりに使用する必要がありますstd::ifstream
。
fopen のマニュアルページから:
SYNOPSIS
#include <stdio.h>
FILE *fopen(const char *path, const char *mode);
FILE *fdopen(int fd, const char *mode);
FILE *freopen(const char *path, const char *mode, FILE *stream);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
fdopen(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE
DESCRIPTION
The fopen() function opens the file whose name is the string pointed to by path and associates a stream with it.
したがって、返されたポインターは、ファイルへのストリームにアクセスするために使用されます。