[問題] 雙重指標

作者: spong (請輸入ID)   2020-06-15 01:40:38
#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?
作者: loveme00835 (髮箍)   2020-06-15 01:51:00
型別才是最重要的, 不要用值去學習
作者: poolongkong (普攏貢)   2020-06-15 02:21:00
https://ideone.com/4r5xXd其實這個寫法的概念就跟value vs. pointer是一樣的如果想要保留變數在函式中的任何操作,可以透過傳遞變數位址的方式同理,如果想要保留一維指標在函式中的操作,可以透過傳遞指標位址的方式
作者: sarafciel (Cattuz)   2020-06-15 10:55:00
你的code在語意上錯了 ptr跟&ptr是不一樣的
作者: Richun (解放左手的OO之力)   2020-06-15 14:40:00
你可以試著用指標實作一個二維陣列 試試只有int*會怎樣int**我會解釋成(int*)*,是存一個(int*)變數的位址的型態
作者: loveme00835 (髮箍)   2020-06-15 15:57:00
把指標值印出來當參考的這種學習方法很大機會是概念理解有誤, 處理複雜一點的型別就會出問題
作者: chuegou (chuegou)   2020-06-15 21:38:00
指向“型別為指標的變數”的指標指向“型別為int的變數”的指標被指的東西不一樣
作者: dces4212 (flawless)   2020-06-17 00:14:00
對名字誤解也會讓你難理解它的用途,他不叫雙重指標,而是指標的指標,顧名思義,他是指向指標的指標,主要用來操作指標的內容(記憶體位址),而非其對應資料型態所指向的資料*所指的資料

Links booklink

Contact Us: admin [ a t ] ucptt.com