字符串常量初始化指針
- 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*類型的地址將會自動打印從該地址指向的空間開始直到遇到’