char** buffer (このような2重の**の意味について)
私は現在C++のプログラミングを学習しています。
C++の教本(SoftbankCreative 高橋麻奈著 やさしいC++)
自体は読み終え、今現在別のプログラムの本を読んでいるのですが、
わからない表記があり、
またネットでどのように(何という名前で)検索していいかわからないのでこちらで質問させて頂きます。
(char* buffer などであれば「ポインタ」とかで検索すれば出るのですが…、char**のように2重になってるのは引っ掛かりませんでした。)
たとえば、
void readFile( char** buffer, int* size, const char* filename );
このような場合、
char** buffer はどういう事なのでしょうか?
この書き方の名前等はありますか?(char* buffer だと ポインタ のように)
あるいは、基本的なC++の本に載っている知識の組み合わせで理解できるものなのでしょうか?
ネットのC++勉強サイトや、ヒントでいいので教えて頂きたいです。
必要ないかもしれませんが、私がつまった所に関連するコードを載せておきます。
void readFile( char** buffer, int* size, const char* filename );
~~~
(mainLoop()という関数内)
const char* filename = "stageData.txt";
char* stageData;
int fileSize;
readFile( &stageData, &fileSize, filename );
~~~
void readFile( char** buffer, int* size, const char* filename ){
ifstream in( filename, ifstream::binary );
if ( !in ){
*buffer = 0;
*size = 0;
}else{
in.seekg( 0, ifstream::end );
*size = static_cast< int >( in.tellg() );
in.seekg( 0, ifstream::beg );
*buffer = new char[ *size ];
in.read( *buffer, *size );
}
}
途中で、
char* stageData;
とし、
readFile( &stageData,
のように放り込んでいるので、
ポインタのその更にポインタ、みたいな感じでしょうか?
であればあえて2重にする意味がよくわからないです。
よろしくお願い致します。
お礼
ありがとうございました。 英語論文訳していてでてきたことなのでその辺はわかりません。