Re: [問題] 怎樣把二維陣列傳給另一個function

看板C_and_CPP (C/C++)作者 (瑪利歐)時間16年前 (2009/03/14 20:43), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串3/6 (看更多)
※ 引述《y2jj (.)》之銘言: : #include <stdio.h> : #include <stdlib.h> : int x,y; : void sub(int b[x][y]){ : … : } : void main(){ : printf("x:");scanf("%d",&x); : printf("y:");scanf("%d",&y); : int a[x][y]; : sub(a); : } : 錯誤訊息:variable-size type declared outside of any function : 我想讓副程式sub知道陣列維度 : 不知道錯在哪邊 : 請各位前輩指點 謝謝~~~ 最大的問題出在 void sub(int b[x][y]) 這行, 靜態陣列使用變數大小。 //事實上,main 函式中的 int a[x][y] 應該也是不合法的。 陣列的本質是指標, 最佳的解決辦法是傳入陣列指標及大小,再判斷邊界, 例如 void Sub( int *array, int row, int col ) 搭配 array[i*row+col] 參考, 問題便解決了! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.161.121.214

03/14 20:45, , 1F
這樣傳會有問題
03/14 20:45, 1F

03/14 21:20, , 2F
噢,哪邊會有問題呢?
03/14 21:20, 2F

03/14 21:42, , 3F
int** array_pointer
03/14 21:42, 3F

03/14 21:44, , 4F
當使用array_pointer[i][j] compiler沒辦法知道i要跳多少位置
03/14 21:44, 4F

03/14 21:47, , 5F
我懂你的意思了..那個部分是副程式宣告,在 main() 中
03/14 21:47, 5F

03/14 21:48, , 6F
則是使用 int array[N][N]; 這樣宣告,那這樣會有問題嗎?
03/14 21:48, 6F

03/14 21:48, , 7F
自問自答,會,我錯了XD 我修改一下..
03/14 21:48, 7F
※ 編輯: gba356 來自: 218.161.121.214 (03/14 21:49)
文章代碼(AID): #19kwPPZO (C_and_CPP)
文章代碼(AID): #19kwPPZO (C_and_CPP)