作者gba356 (玛利欧)
看板C_and_CPP
标题Re: [问题] 怎样把二维阵列传给另一个function
时间Sat Mar 14 20:43:04 2009
※ 引述《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
1F:推 ADF:这样传会有问题 03/14 20:45
2F:→ gba356:噢,哪边会有问题呢? 03/14 21:20
3F:→ ADF:int** array_pointer 03/14 21:42
4F:→ ADF:当使用array_pointer[i][j] compiler没办法知道i要跳多少位置 03/14 21:44
5F:→ gba356:我懂你的意思了..那个部分是副程式宣告,在 main() 中 03/14 21:47
6F:→ gba356:则是使用 int array[N][N]; 这样宣告,那这样会有问题吗? 03/14 21:48
7F:→ gba356:自问自答,会,我错了XD 我修改一下.. 03/14 21:48
※ 编辑: gba356 来自: 218.161.121.214 (03/14 21:49)