如何实现对二维数组的参数传递
在实际应用中,经常需要把数组作为形式参数
对一维数组可使用如下形式:
void fun(T a[]){ }
在子程序对数组的改变能影响到调用它的数组。二维数组如此 void fun(T a[][])就不行,
试着以这种形式调用:
void main() void fun(int **t)
{ {
int a[2][3]; t[0][1]=3;//等等
int **p; }
p=a;
fun(p);
}
此种调用编译时主程序部分就不能通过,如可行的话,
则我们可以看到的值为a[0][1]==3;
请帮助解决
问题点数:90、回复次数:5Top
1 楼bluesmile979(笑着)回复于 2003-12-04 11:23:57 得分 0
void main() void fun(int *t)
{ {
int a[2][3]; t[0][1]=3;//等等
int *p; }
p=a;
fun(p);
}
Top
2 楼wkqc(被骗没够)回复于 2003-12-04 12:57:42 得分 10
数组是以地址的方式传递给函数参数的,二位数组也是一段连续的存储区域,只需传入首地址即可,int**是指向int型的指针的指针。Top
3 楼gushaoping(五月)回复于 2003-12-05 06:59:13 得分 0
to wkqc
你的意思是不是 p 一定要定义成数组指针
我最终要达到的目的是:void main(){}函数中定义的a 数组,把它传到子函数fun()中,
使fun()能影响到a数组,这里想用指针p(是否不行)实现此功能
Top
4 楼ZhangYv(迎着朝阳,走向地狱)回复于 2003-12-05 08:51:00 得分 40
void fun(int p[][10])
{
}
int main()
{
int a[10][10];
fun(a);
return 0;
}Top
5 楼stephen85()回复于 2003-12-05 09:20:00 得分 40
void fun(int **p)
{
}
void main
{
int **a,i;
a=(int **)malloc(10*sizeof(int *));
for(i=0;i<10;i++)
a[i] = (int *)malloc(10*sizeof(int));
fun(a);
}Top




