我從以下兩個聲明和初始化打印出地址和字符串charArray和strPtr。問題是,「爲什麼?」字符*變量地址與炭[]可變地址
印刷:
printf("%10s%40s%20p\n", "strPtr", strPtr, &(*strPtr));
printf("%10s%40s%20p\n", "charArray", charArray, charArray);
輸出:
strPtr This is a string, made on the fly. 0x400880
charArray Chars in a char array variable. 0x7fff12d5ed30
不同的地址,你看,主要有:0x400880與0x7fff12d5ed30
的變量在此之前有地址聲明的休息像charArray那樣。
同樣,問題是,「爲什麼地址如此不同?」 感謝您的幫助。
只是一些建議;聲明指向字符串文字的指針更爲有利,例如`const char * str =「string」;`。這有助於防止試圖修改字符串文字的未定義行爲。 – dreamlax 2010-12-05 03:33:04