[問題] 指標問題

看板C_and_CPP (C/C++)作者 (猴仔)時間12年前 (2011/11/14 19:19), 編輯推噓1(1027)
留言28則, 5人參與, 最新討論串9/13 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): int a[][3] = {1,2,3,4,5,6}; int (*ptr)[3] = a; <--- 敢問大家 這是甚麼意思啊??? 是宣告ptr是一個二維的陣列, 而 她跟a其實都是一個[2][3] 的array嗎? 且date是一樣的 所以 ptr = a (都指向 {1,2,3,4,5,6}) ?? 是這個意思嗎? thx -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.167.11.180

11/14 20:25, , 1F
不太一樣 ptr是一個指標 指向int[3]的陣列
11/14 20:25, 1F

11/14 20:27, , 2F

11/14 20:27, , 3F
可以參考這篇 http://ppt.cc/Tfr0
11/14 20:27, 3F

11/14 20:31, , 4F
你可以把(*ptr)[3]拆成兩部份來看
11/14 20:31, 4F

11/14 20:31, , 5F
前面的(*ptr)是指向a陣列的第一個維度
11/14 20:31, 5F

11/14 20:32, , 6F
後面的[3]就是表示每一個維度中有3個東西
11/14 20:32, 6F

11/14 20:33, , 7F
相信第一個for跟第三個for你應該都懂意思
11/14 20:33, 7F

11/14 20:33, , 8F
比較特殊的是第二個for,那個可以看成是當作起點的
11/14 20:33, 8F

11/14 20:34, , 9F
位置不同
11/14 20:34, 9F

11/14 20:34, , 10F
typedef is your good friend
11/14 20:34, 10F

11/14 20:34, , 11F
舉例來說,(*ptr + 5)[3],原本起點如果是(*ptr)
11/14 20:34, 11F

11/14 20:35, , 12F
表示起點是從[0][0]開始,但例子中是從[0][0]位置加
11/14 20:35, 12F

11/14 20:36, , 13F
5開始算,後面還有[3],就在改變過後的原點加上5
11/14 20:36, 13F

11/14 20:36, , 14F
然後我發現例子舉的不好...爆掉了= =
11/14 20:36, 14F

11/14 20:37, , 15F
如果有錯的地方請指教...
11/14 20:37, 15F

11/14 20:37, , 16F
typedef?
11/14 20:37, 16F

11/14 20:42, , 17F
ex, typedef int (*parr)[3];
11/14 20:42, 17F

11/14 20:47, , 18F
樓上的太複雜了
11/14 20:47, 18F

11/14 20:50, , 19F
太深奧了...
11/14 20:50, 19F

11/14 20:50, , 20F

11/14 20:52, , 21F
看得懂 int 一維陣列的話也一定懂這個
11/14 20:52, 21F

11/14 20:55, , 22F
懂了!感謝
11/14 20:55, 22F

11/14 20:59, , 23F
我compiler出現錯誤
11/14 20:59, 23F

11/14 20:59, , 24F
redeclaration of 'int a [][3]'看一看又有點怪怪...
11/14 20:59, 24F

11/14 21:01, , 25F
#1ArUtk-Z 發現這篇有講到,在研究看看
11/14 21:01, 25F

11/14 21:01, , 26F
我跑 http://codepad.org/KHy56VNz 這個完全沒問題耶
11/14 21:01, 26F

11/14 21:09, , 27F
我貼到原本的程式名字重複= =
11/14 21:09, 27F

11/14 21:13, , 28F
http://ppt.cc/cnrd 這網站不錯
11/14 21:13, 28F
文章代碼(AID): #1EmFaamH (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1EmFaamH (C_and_CPP)