const char
ポインタについて混乱しています。
コードは次のとおりです。
int main()
{
const char map[12][24];
char fileName[] = "map1.txt";
const char * mPtr;
mPtr = map;
printf( "%d %d \n", mPtr, map );
load_map( fileName, map );
printf( "%d %d \n", mPtr, map );
return 0;
}
load_map()
関数コードは次のとおりです。
bool load_map( char * fileName, char * map )
{
FILE * fptr;
char c;
int count = 0;
fptr = fopen( fileName, "r" );
if( fptr == NULL ) {
printf( "Fail to read map \n" );
return false;
}
do {
c = fgetc( fptr );
*( map + count++ ) = c;
if ( count % 23 == 0 ) continue;
*( map + count++ ) = ' ';
} while( c != EOF );
fclose( fptr );
}
私の質問はいつ実行するかです
mPtr = map;
そして、それらはまったく同じメモリアドレスを持ちますが、load_map()
関数が実行され
た後、mptr
の値が変更されました。
しかし、その関数では、私は参照しませんmptr
。何が起こっている?