[問題] C函式傳入二維陣列

看板C_and_CPP (C/C++)作者 (風行草)時間10年前 (2016/05/06 09:41), 編輯推噓3(306)
留言9則, 5人參與, 最新討論串1/1
先附上程式碼 http://ideone.com/zlYoCi 跑出來結果似乎是正確的 不過有出現警告如下: 第14行:[Warning] passing argument 1 of 'printfLegal' from incompatible pointer type 第4行:[Note] expected 'int *' but argument is of type 'int (*)[3]' 看了很久還是不懂為什麼會跳出來這些訊息 可以請大家指點一下嗎? 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.248.220.167 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1462498877.A.B1A.html

05/06 09:49, , 1F
int [10][3] 跟 int *其實是不同的東西
05/06 09:49, 1F

05/06 09:51, , 2F
同意樓上... 請看置底十三誡之第十二誡
05/06 09:51, 2F

05/06 09:53, , 3F
第十二誡的話是寫成int**,又是不同的東西XD
05/06 09:53, 3F

05/06 09:56, , 4F
所以只要強制轉型把 warning 除掉,程式就是正確的嗎?
05/06 09:56, 4F

05/06 10:05, , 5F
我會禁止別人把二維陣列當一維用,但我忘記理由了...
05/06 10:05, 5F

05/06 20:56, , 6F
如果你夠清楚在做什麼的話可以做
05/06 20:56, 6F

05/06 22:53, , 7F
int (*array)[3] 改這樣
05/06 22:53, 7F

05/07 00:11, , 8F
也可以傳int array[][3],這兩個等價
05/07 00:11, 8F

05/07 00:15, , 9F
函數不能傳或返回陣列,但可以傳或返回陣列的指標
05/07 00:15, 9F
文章代碼(AID): #1NA_OziQ (C_and_CPP)
文章代碼(AID): #1NA_OziQ (C_and_CPP)