Yahoo 知識+ 將於 2021 年 5 月 4 日 (美國東岸時間) 停止服務,而 Yahoo 知識+ 網站現已轉為僅限瀏覽模式。其他 Yahoo 資產或服務,或你的 Yahoo 帳戶將不會有任何變更。你可以在此服務中心網頁進一步了解 Yahoo 知識+ 停止服務的事宜,以及了解如何下載你的資料。
C語言:關於一個二維陣列如何傳入 函式的問題?
是這樣的,我想把一個二維陣列傳入函式
然後我大概是這樣子寫(C99):
因為發問系統無法使用百分比符號
所以我用(o/o)代替
int func(int**,int);
int main(){
scanf("(o/o)d",&n);
int a[n+1][n+1];
...
func(a,n);
return 0;
}
int func(int** a,int n){
printf("a[0][1]");
return 0;
}
理論上,一個二維陣列
陣列名稱會產生一個二維指標才是阿
但是他卻告訴我
"warning: passing argument ... from incompatible pointer type"
誰可以幫我解釋一下
為什麼會發生這類事情
感激萬分!!!
1 個解答
- prisoner26535Lv 75 年前最愛解答
> 理論上,一個二維陣列 陣列名稱會產生一個二維指標才是阿
WRONG.
TYPE a[A][B];
typeof(a) == (TYPE const * [B])
typeof(a) != TYPE**
所以:
func(a,n)
當然叫不到:
int func(int**,int)
所以他卻告訴你
"warning: passing argument ... from incompatible pointer type"
是絕對正確的!
何況:
func(a, n); // 也是錯誤的!!!
x = func(&a[0][0], n+1); //才是對的!!!
為神? 自己先想想吧!
> 感激萬分!!!
不必.