[問題] new 出來的記憶體用 [] 存取

看板C_and_CPP作者 (qq)時間12年前 (2013/05/06 21:07), 編輯推噓0(0027)
留言27則, 6人參與, 最新討論串1/1
struct Element { int Value; Element* Next; }; cout << "請輸入 Element 的數目:\n"; cin >> Size; Element* pE = new Element[Size]; for (int i=0; i<(Size-1); i++) pE[i].Next = pE + i +1; pE[Size-1].Next = NULL; for (int i=0; i<(Size); i++) pE[i].Value = i*2; -------------------------------------------------------------------------- 請問一下*pE是ㄧ個指標 1.為什麼這裡可以用pE[i]這種陣列的方式來存取? 2.pE[i].Next這裡pE不是一個指標嗎? 不是應該用->Next這種方式存取Next的值嗎? 怎麼會變成用.Next這種方式? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.235.189.46 ※ 編輯: pujols05 來自: 36.235.189.46 (05/06 21:10)

05/06 21:20, , 1F
pE[i] = *(pE+i)
05/06 21:20, 1F

05/06 22:13, , 2F
*(pE+i).Next = pE + i +1;改成這樣的話 會有error
05/06 22:13, 2F

05/06 22:14, , 3F
(*(pE+i)).Next 試試
05/06 22:14, 3F

05/06 22:19, , 4F
(pE+i)->Next可以嗎?
05/06 22:19, 4F

05/06 22:36, , 5F
樓上2位的方式都沒有error
05/06 22:36, 5F

05/06 22:39, , 6F
但是對這個觀念還是很模糊,怎麼"."和"->"都可以使用
05/06 22:39, 6F

05/06 22:41, , 7F
pE不是指標型態嗎?存取的話不是只能用"->"
05/06 22:41, 7F

05/06 22:44, , 8F
pE[i]不是指標型態^^
05/06 22:44, 8F

05/06 22:44, , 9F
這是 . 跟 * 優先的問題吧=口=
05/06 22:44, 9F

05/06 22:48, , 10F
pE[i].Next 是pE[i]這個Element的成員 Element* Next
05/06 22:48, 10F

05/06 22:48, , 11F
那寫成 pE[i].Next = 就代表你將一個值 assign給Next
05/06 22:48, 11F

05/06 22:51, , 12F
pE[i].Next = pE + i + 1 // Next指到的位子是pE+i+1
05/06 22:51, 12F

05/06 22:54, , 13F
至於->,是你->左手邊已經是個pointer才是這樣用
05/06 22:54, 13F

05/06 23:41, , 14F
謝謝樓上,再請問pE[i] = *(pE+i);如果指標可以改成這樣表
05/06 23:41, 14F

05/06 23:53, , 15F
示不會有問題嗎?
05/06 23:53, 15F

05/06 23:57, , 16F
像是int *b[10]={0};int *a=new int [10];a[1]=b[1];
05/06 23:57, 16F

05/06 23:57, , 17F
就有錯,a和b不是都算是指標嗎?
05/06 23:57, 17F

05/07 00:16, , 18F
int *b[10] //一個size為10的array, element為int ptr
05/07 00:16, 18F

05/07 00:17, , 19F
int *a = new int [10] // a是pointer 指到一個array
05/07 00:17, 19F

05/07 00:18, , 20F
b[1]是一個 int pointer, a[1]是int
05/07 00:18, 20F

05/07 00:19, , 21F
你可能要再去看相關的資料, 感覺基本概念還搞不清楚
05/07 00:19, 21F

05/07 00:20, , 22F
05/07 00:20, 22F

05/07 21:50, , 23F
謝謝幾位的解答.
05/07 21:50, 23F

05/07 23:27, , 24F
剛看完K大介紹的網站,裡面有介紹指標不等於陣列,讓我比較
05/07 23:27, 24F

05/07 23:29, , 25F
疑惑的是pE既然是一個指標,為什麼用陣列的方式表達,他不
05/07 23:29, 25F

05/07 23:29, , 26F
會出錯
05/07 23:29, 26F

05/08 20:50, , 27F
那個網站裡面沒說指標不能用陣列方式存取吧
05/08 20:50, 27F
文章代碼(AID): #1HXwhxTh (C_and_CPP)