[問題] int *ip[4] 是什麼意思????

看板C_and_CPP (C/C++)作者 (呦厚厚)時間14年前 (2011/08/16 08:04), 編輯推噓5(5016)
留言21則, 8人參與, 最新討論串1/1
我現在在看 primer C++ 第四版 在 p143 遇到一個問題 這邊在講 int *ip[4]; 和 int (*ip)[4]; 的不同 後面的 int (*ip)[4]; 我知道是用來指向多維陣列 但是前面的 int *ip[4] 就怎樣都不能理解 而書中對於 int *ip[4] 的介紹只有一句話 這是個由 pointer to int 所形成的 array 光憑這句話 我還是不懂 int *ip[4] 應該指向什麼東西 怎麼嘗試 compile 都不會過 所以想請問一下大家 int *ip[4]; 該指向什麼東西 如果可以有個幾行範例就太好了 XD 謝謝了 ^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.155.241

08/16 08:22, , 1F
運算子優先權,一元運算子裡面,[]最高,因為他 postfix
08/16 08:22, 1F

08/16 08:23, , 2F
dereference 的 * 次之,因為他 prefix,所以 int *ip[4];
08/16 08:23, 2F

08/16 08:24, , 3F
中,ip先會是跟[]結合,成為一個有4元素的 int * 型態陣列
08/16 08:24, 3F

08/16 08:38, , 4F
至於範例的話 http://pastie.org/2377963
08/16 08:38, 4F

08/16 09:21, , 5F
我相反 我看的懂前面 看不懂int (*ip)[4]有沒有誰可解釋XD
08/16 09:21, 5F

08/16 09:27, , 6F
承一樓,因為[]運算子太高,用括號改變後,ip會先跟*結合
08/16 09:27, 6F

08/16 09:27, , 7F
所以ip是一個指標,指向的型態是 int [4]
08/16 09:27, 7F

08/16 09:28, , 8F
如果ip指標的位址是100,則ip+1得到的位址將是100+4*4
08/16 09:28, 8F

08/16 09:30, , 9F
至於範例的話 http://codepad.org/3ehbPWyd
08/16 09:30, 9F

08/16 10:00, , 10F
謝兩位
08/16 10:00, 10F

08/16 11:25, , 11F
感謝解說與範例
08/16 11:25, 11F

08/16 19:39, , 12F
你可以去研究一下 main () 的第二個參數用法XD
08/16 19:39, 12F

08/16 19:44, , 13F
argv 似乎比較像是 char** argv, 而非 char* argv[n] ?
08/16 19:44, 13F

08/16 21:27, , 14F
char **argv char *argv[] 兩個都可以
08/16 21:27, 14F

08/16 21:28, , 15F
別忘了最最基本的觀念 array name是指向第一個
08/16 21:28, 15F

08/16 21:29, , 16F
element 的 pointer
08/16 21:29, 16F

08/16 21:42, , 17F
main的caller根本不在乎 main 裡面有哪些參數,每個參數是
08/16 21:42, 17F

08/16 21:43, , 18F
哪些型態,反正你就算寫main(void) 要傳的參數還是要傳
08/16 21:43, 18F

08/16 23:11, , 19F
謝謝 ^^
08/16 23:11, 19F

08/16 23:11, , 20F
不過main裡面的參數 我從來沒用過 不知道要幹嘛的XD
08/16 23:11, 20F

08/17 09:08, , 21F
想想console執行程式時 可以打些什麼東西~
08/17 09:08, 21F
文章代碼(AID): #1EIRF_2q (C_and_CPP)
文章代碼(AID): #1EIRF_2q (C_and_CPP)