在C++中,當聲明一個變量並進行初始化之後,便在內存中開闢了一塊地方,變量名其實就是內存的地址,變量的值就是內存中存放的數據。因此,對變量名取地址運算符得到的就是該變量的內存地址。如下所示:
#include using namespace std; int main() { int num=1; int *p=# cout<輸出的是變量num在內存中的地址。
然而,當我們換一個字符變量試試,結果就大跌眼鏡。
#include using namespace std; int main() { char ch='a'; string s="string"; char *p1=&ch; char *p2=&s[0]; cout<結果前2個輸出的是a加亂碼,後兩個輸出的是字符串"string"。出現這個問題的原因是C++標準庫中I/O類對輸出操作符<
#include #include using namespace std; int main() { char ch='a'; string s="string"; char *p1=&ch; char *p2=&s[0]; printf("%p\n",p1); cout<這樣,就可以正確輸出字符的地址了。