看板 C_and_CPP 關於我們 聯絡資訊
指標要先有個觀念 int *tmp = ....; *tmp = ....; 雖然它們都有個 *tmp,但意思卻是完全不同的 int *tmp 要看成 int *tmp,星星跟int一起看 代表你宣告了一個變數叫做tmp,它的型態是int * 所以當我們寫 int *p = &temp; 的時候 它的意思相當於這兩行 int *p; p = &temp; // 注意這個時候沒有 * *tmp 前面沒有寫型態的時候,它才是書上寫的 「變數前面加*代表指的是記憶體位址的"值"」 英文叫做 dereference 給你一個簡單的範例,你可以觀察它們的輸出 哪些東西一樣,哪些東西不一樣,哪些東西會變,哪些不會變 如果每一個輸出都了解,那應該就沒啥問題了 #include <iostream> using namespace std; int main() { int x = 3; int y = 5; int *p = NULL; cout << "&x : " << hex << &x << endl; cout << "&y : " << hex << &y << endl; cout << "----------" << endl; cout << "&p : " << hex << &p << endl; cout << " p : " << hex << p << endl; // cout << "*p : " << hex << *p << endl; 可以拿掉註解試試,詳見置底十三戒第3 cout << "---------" << endl; p = &x; cout << "&p : " << hex << &p << endl; cout << " p : " << hex << p << endl; cout << "*p : " << hex << *p << endl; cout << "---------" << endl; *p = y; cout << "&p : " << hex << &p << endl; cout << " p : " << hex << p << endl; cout << "*p : " << hex << *p << endl; cout << "---------" << endl; p = &y; cout << "&p : " << hex << &p << endl; cout << " p : " << hex << p << endl; cout << "*p : " << hex << *p << endl; cout << "---------" << endl; *p = x; cout << "&p : " << hex << &p << endl; cout << " p : " << hex << p << endl; cout << "*p : " << hex << *p << endl; return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 101.13.50.119