我对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
. 怎么了?