當一個字符串常量出現於表達式中時,它的值是個指針常量。編譯器把這個指定字符的一份copy存儲在內存的某個位置(全局區),並存儲一個指向第一個字符的指針。但是,當數組名用於表達式中時,它們的值也是指針常量。我們可以對他們進行下標引用、間接訪問以及指針運算。
#include <iostream> using namespace std; int main() { /*當一個字符串常量出現於表達式中時,它的值是個指針常量。編譯器把這個指定字符的一份copy存儲在內存的某個位置, 並存儲一個指向第一個字符的指針。但是,當數組名用於表達式中時,它們的值也是指針常量。我們可以對他們進行下標 引用、間接訪問以及指針運算。*/ cout << *"xyz" << endl;//x cout << *"xyz"+1 << endl;//y的ascll碼 cout << "xyz"[2] << endl;//z //cout << *("xyz"+4) << endl; cout << "xyz"+1<< endl;//yz /*======等價於======*/ cout << "/*======等價於======*/"<< endl; char *p="xyz"; cout << *p << endl;//x cout << *p+1 << endl;//y的ascll碼 cout << char(*p+1) << endl;//y cout << p[2] << endl;//z cout << p+1<< endl;//yz return 0; }
運行結果: