字元串常量初始化指針
- 2019 年 10 月 3 日
- 筆記
今天寫個小文說一說字元串地址和字元串常量。
在C/C++中,一個字元串常量表示的是該字元串第一個元素的地址,就跟char指針名,char數組名表示的是字元串第一個元素的地址一樣。
想要列印一個地址,用一個簡單的 cout << 地址; 語句就可以搞定;
但是下面這兩條語句將列印整個字元串
char a[20] = "1234"; cout << a << endl; char *p = a; cout << p << endl;
這也是字元數組 與其他數組不同的一個地方,那麼該如何得到該字元串的地址呢?
下面有兩種方法可供參考
cout << (int*)a << endl; cout << &a << endl;
這兩種方法都可以正確列印出“字元串的地址”,但是有細微區別之處
在字元數組a中,a表示第一個字元的地址,a+1表示第二個字元的地址;
在第一條列印地址的語句中,(int*)a只是起到了一個強制類型轉換的作用,換句話說,a表示第一個字元的地址,但是cout <<a;輸出的是整個字元串,這是因為這個地址是char*類型的,cout識別到char*類型的地址將會自動列印從該地址指向的空間開始直到遇到’