作者spong (請輸入ID)
看板C_and_CPP
標題[問題] 雙重指標
時間Mon Jun 15 01:40:38 2020
#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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1592156440.A.03A.html
1F:→ loveme00835: 型別才是最重要的, 不要用值去學習 06/15 01:51
3F:→ poolongkong: 其實這個寫法的概念就跟value vs. pointer是一樣的 06/15 02:23
4F:→ poolongkong: 如果想要保留變數在函式中的任何操作,可以透過傳遞 06/15 02:25
5F:→ poolongkong: 變數位址的方式 06/15 02:25
6F:→ poolongkong: 同理,如果想要保留一維指標在函式中的操作,可以透 06/15 02:25
7F:→ poolongkong: 過傳遞指標位址的方式 06/15 02:27
8F:→ sarafciel: 你的code在語意上錯了 ptr跟&ptr是不一樣的 06/15 10:55
9F:推 Richun: 你可以試著用指標實作一個二維陣列 試試只有int*會怎樣 06/15 14:40
10F:→ Richun: int**我會解釋成(int*)*,是存一個(int*)變數的位址的型態 06/15 14:41
11F:→ loveme00835: 把指標值印出來當參考的這種學習方法很大機會是概念 06/15 15:57
12F:→ loveme00835: 理解有誤, 處理複雜一點的型別就會出問題 06/15 15:57
13F:→ chuegou: 指向“型別為指標的變數”的指標 06/15 21:38
14F:→ chuegou: 指向“型別為int的變數”的指標 06/15 21:38
15F:→ chuegou: 被指的東西不一樣 06/15 21:38
16F:推 dces4212: 對名字誤解也會讓你難理解它的用途,他不叫雙重指標, 06/17 00:14
17F:→ dces4212: 而是指標的指標,顧名思義,他是指向指標的指標,主要 06/17 00:14
18F:→ dces4212: 用來操作指標的內容(記憶體位址),而非其對應資料型態 06/17 00:14
19F:→ dces4212: 所指向的資料 06/17 00:14
20F:→ dces4212: *所指的資料 06/17 00:15