※ 引述《HeroPerffig (傲劍)》之銘言:
: int *data[]
: 那個 弄了很久不是不太清楚耶 ^_^"
: 小金助教說可以拿來當 data[m][n] 用
: 不過自己在試的時候 我在main裡設了一個測資矩陣 a[m][n]的話 (or a[m*n] ?)
: 他跟*data[] 要怎麼關聯 才有辦法讓我可以傳值到 Row_Echelon(data,m,n)裡 ?
: 請問有人可以幫我解答一下嗎...
: 感謝 orz
在 function declaration 的時候第二維的 size 要指定,
例如:
void Row_Echelon(int data[][100], int m, int n);
因為在存取 data[i][j] 的時候,
compiler 事實上是會取 data + i * 100 + j 位址儲存的值,
所以 compilen 需要那個 "100" 來知道 offset 要怎麼計算.
BTW, 這個宣告和
void Row_Echelon(int (*data)[100], int m, int n);
是相等的, data 在兩者都是 "指到 int[100] (連續 100 個 int) 這種型態的指標."
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.52
※ 編輯: chhsiao 來自: 140.112.30.52 (11/19 08:45)