看板 C_and_CPP 關於我們 聯絡資訊
#include<iostream> using namespace std; int main(void) { int x = 5; int *ptr=&x; int **temp =&ptr; cout << "&ptr="<<ptr<< endl; cout << "*ptr=" << *ptr<< endl; cout << "&temp=" <<temp <<endl; cout << "**temp="<<**temp <<endl; return 0; } 既然雙重指標,是指標的指標,為什麼不能宣告int *temp 去指向 int *ptr呢? 一定要用**temp? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.213.185.143 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1592156440.A.03A.html
loveme00835: 型別才是最重要的, 不要用值去學習 06/15 01:51
poolongkong: https://ideone.com/4r5xXd 06/15 02:21
poolongkong: 其實這個寫法的概念就跟value vs. pointer是一樣的 06/15 02:23
poolongkong: 如果想要保留變數在函式中的任何操作,可以透過傳遞 06/15 02:25
poolongkong: 變數位址的方式 06/15 02:25
poolongkong: 同理,如果想要保留一維指標在函式中的操作,可以透 06/15 02:25
poolongkong: 過傳遞指標位址的方式 06/15 02:27
sarafciel: 你的code在語意上錯了 ptr跟&ptr是不一樣的 06/15 10:55
Richun: 你可以試著用指標實作一個二維陣列 試試只有int*會怎樣 06/15 14:40
Richun: int**我會解釋成(int*)*,是存一個(int*)變數的位址的型態 06/15 14:41
loveme00835: 把指標值印出來當參考的這種學習方法很大機會是概念 06/15 15:57
loveme00835: 理解有誤, 處理複雜一點的型別就會出問題 06/15 15:57
chuegou: 指向“型別為指標的變數”的指標 06/15 21:38
chuegou: 指向“型別為int的變數”的指標 06/15 21:38
chuegou: 被指的東西不一樣 06/15 21:38
dces4212: 對名字誤解也會讓你難理解它的用途,他不叫雙重指標, 06/17 00:14
dces4212: 而是指標的指標,顧名思義,他是指向指標的指標,主要 06/17 00:14
dces4212: 用來操作指標的內容(記憶體位址),而非其對應資料型態 06/17 00:14
dces4212: 所指向的資料 06/17 00:14
dces4212: *所指的資料 06/17 00:15