討論串[問題] 陣列指標與陣列: 位址相同, 值卻不同
共 5 篇文章
首頁
上一頁
1
下一頁
尾頁

推噓2(2推 0噓 1→)留言3則,0人參與, 最新作者inventorr (風之子)時間14年前 (2010/04/07 00:02), 編輯資訊
2
0
0
內容預覽:
各位大大 想請教一個觀念. 在下面的情況下, a+2 與 ptr+1 的 位址是相同的. 但是為什麼*(a+2) 與 *(ptr+1) 的 值不同呢. 想了好久 (我是在gcc 4.3下面編譯). #include<stdio.h>. int main(int argc, char* argv[])
(還有147個字)

推噓1(1推 0噓 1→)留言2則,0人參與, 最新作者dendrobium (石斛蘭)時間14年前 (2010/04/07 00:20), 編輯資訊
1
0
0
內容預覽:
因為type不同. a 是由 int 所組成的 array. ptr 所指的是 int[2] (長度是2的int array). a+2 = a + 2*sizeof(int). *(a+2) 的 type 是 int. 所以輸出無誤. ptr+1 = a + sizeof(int[2]). = a
(還有120個字)

推噓0(0推 0噓 0→)留言0則,0人參與, 最新作者inventorr (風之子)時間14年前 (2010/04/07 00:27), 編輯資訊
1
0
0
內容預覽:
感謝回覆. 我剛剛又試了一下. 發現把 *(ptr+1) 改成 **(ptr+1) 則可以顯示相同的值3. 所以我可以說 **(ptr+1) 的type跟 *(a+2) 一樣嗎. 如果可以的話 怎麼去理解會比較好呢 如果不行 又該怎麼解釋呢. 謝謝. --. 發信站: 批踢踢實業坊(ptt.cc

推噓1(1推 0噓 0→)留言1則,0人參與, 最新作者dendrobium (石斛蘭)時間14年前 (2010/04/07 00:34), 編輯資訊
0
0
0
內容預覽:
就像是. int a[2]={4,5};. printf("%p\n",&a); 相當於 printf("%p\n", ptr);. printf("%p\n",a); printf("%p\n", *(ptr));. printf("%d\n",*a); printf("%d\n", **(ptr

推噓3(3推 0噓 4→)留言7則,0人參與, 最新作者in09時間14年前 (2010/04/07 09:55), 編輯資訊
0
0
0
內容預覽:
好詭異的程式, 我第一個想法和推文一樣 : compile 不會過. 不過試了一下, 只有 warning.. dendrobium 解釋得和我想法不同, 所以我試了一下, 驗證我的猜測 :. int (*ptr)[2] --> 宣告 int pointer array, 不是 int array.
(還有180個字)
首頁
上一頁
1
下一頁
尾頁