看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
ADF:這樣傳會有問題 03/14 20:45
gba356:噢,哪邊會有問題呢? 03/14 21:20
ADF:int** array_pointer 03/14 21:42
ADF:當使用array_pointer[i][j] compiler沒辦法知道i要跳多少位置 03/14 21:44
gba356:我懂你的意思了..那個部分是副程式宣告,在 main() 中 03/14 21:47
gba356:則是使用 int array[N][N]; 這樣宣告,那這樣會有問題嗎? 03/14 21:48
gba356:自問自答,會,我錯了XD 我修改一下.. 03/14 21:48
※ 編輯: gba356 來自: 218.161.121.214 (03/14 21:49)