[問題] 關於二維陣列的pass by ref

看板C_and_CPP (C/C++)作者 (Arim5566)時間13年前 (2012/08/05 21:15), 編輯推噓6(607)
留言13則, 6人參與, 最新討論串1/2 (看更多)
各位版友好 在傳遞二維陣列給foo的時候: void foo(char str[][11]){ } int main(){ char str[11][11]; foo(str) } 請問為什麼在foo的參數列上面 要用str[][11] 為什麼不需要指定第一個[]的upper bound 而只要去指定第二個[]的upper bound(也就是 指定[11]) 謝謝各位版友的指教 -- ~宅男的四個徵兆~ ∠□ ○ ! * \○/ ★    (○ ? ╦╦└□ " ○□═ □   □> ║║√√ ╦══╦ ∥    |\ 一回家就上PTT 每天想正妹 以當好人為樂 忘記正妹虧欠自己 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.121.253.14 ※ 編輯: Arim 來自: 122.121.253.14 (08/05 21:16)

08/05 21:26, , 1F
說來話長...
08/05 21:26, 1F

08/05 21:42, , 2F
如果你有很多個維度的話 也只有第一個維度不用指定
08/05 21:42, 2F

08/05 21:42, , 3F
剩下後面的全部都要指定
08/05 21:42, 3F

08/05 22:02, , 4F
參數傳陣列,不支援,只能傳指標。str[][11] 用來表示傳指
08/05 22:02, 4F

08/05 22:03, , 5F
標位址,背起來就好了
08/05 22:03, 5F
記得之前上程式語言是說 只傳第二個index的原因是因為 用第二個index就可以把每個陣列的開頭的位置給算出來 比如說第str[1][0]可以由&(str[0][0])+4*11算出來,4是假設每個element佔4個byte 不過我也不太清楚這樣對不對@@ 多維的情況又更複雜了 ※ 編輯: Arim 來自: 122.121.253.14 (08/05 22:12) ※ 編輯: Arim 來自: 122.121.253.14 (08/05 22:13)

08/05 22:16, , 6F
我覺得我回的東西你在補充裡就講完了 Orz
08/05 22:16, 6F

08/05 22:24, , 7F
不是就可以,我再強調,不能、沒有辦法、無能為力,直接
08/05 22:24, 7F

08/05 22:25, , 8F
傳送一個陣列當作參數,所以退而求其次,用指標
08/05 22:25, 8F

08/05 22:30, , 9F
P大國文好猛>.<
08/05 22:30, 9F

08/06 17:05, , 10F
這個東西昨天才在soft_job的[賞書]Expert C Programming
08/06 17:05, 10F

08/06 17:05, , 11F
Deep C Secrets 有提到
08/06 17:05, 11F

08/06 19:15, , 12F
那真的是一本好書啊 !!
08/06 19:15, 12F

08/08 22:39, , 13F
不是背起來就好吧.後面的size都要給是因為這樣
08/08 22:39, 13F
文章代碼(AID): #1G7d7Qn1 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1G7d7Qn1 (C_and_CPP)