當一個字符串常量出現於表達式中時,它的值是個指針常量。編譯器把這個指定字符的一份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;
}
運行結果:
