C语言问题,请问二维数组的函数参数是怎么传递的?
发布网友
发布时间:2022-06-20 20:00
我来回答
共4个回答
热心网友
时间:2024-09-03 15:11
数组为参数时会退化为一个二级指针传递,如图,可以将函数头部写成
void shuchu(int **array_num);
在函数中调用时,直接传递数组名就可以了,数组名可以视为数组的“头指针”,可以用这个指针进行一系列的相关操作,如图,可以按如下方式调用
shuchu(a);
另外,一个建议:不要在传参时忽略数组的长度,最好显式的以参数的形式传递给函数
或者,在数组中做标志,在函数中使用时可以根据标志自行分出维度
满意请采纳,不满意请追问
热心网友
时间:2024-09-03 15:11
你好!关于二维数组传参问题,
在调用的时候直接传数组指针即可,
即:
void main()
{
int a[10][2];
shuru(a);
shuchu(a);
}
函数形参有两种写法,可以写成
void shuru(int (*array_num)[2]){}
//或者
void shuru(int array_num[][2]){}
函数shuchu() 也是一样,
望采纳,如有不明白请追问谢谢!
热心网友
时间:2024-09-03 15:12
在形参是数组的情况下,只要是数组,无论维数,实际上在调用函数时,传给函数的将是一个数组的首地址,以及维数等相关信息
也就是说,在函数执行过程中,并不会新开辟内存空间,而是形参实参共用同一段内存空间
所以,在这种情况下,函数内部对数组进行修改,其值会返回给实参
你的例子中调用部分有问题,不能这样
shuru(a[10][2])
而是
shuru(a)
因为a[10][2]代表数组a中的一个元素,而且是越界的
而a才是数组名
热心网友
时间:2024-09-03 15:12
"数组为参数时会退化为一个二级指针传递"这个理解是不对的 二维数组的形参声明应该是 int(*array_num)[2]
C语言问题,请问二维数组的函数参数是怎么传递的?
数组为参数时会退化为一个二级指针传递,如图,可以将函数头部写成 void shuchu(int **array_num);在函数中调用时,直接传递数组名就可以了,数组名可以视为数组的“头指针”,可以用这个指针进行一系列的相关操作,如图,可以按如下方式调用 shuchu(a);另外,一个建议:不要在传参时忽略数组的长度...
C语言中如何将二维数组作为函数的参数传递
在C语言中可以用二维数组作为实参或者形参。1、函数中用二维数组作为形参,函数声明中可以指定所有维数的大小,也可以省略第1维的维数如:void f(int array[3][10]); //正确 void f(int array[][10]); //正确上面的两种二维数组形参表示都是正确的。2、函数中用二维数组作为形参,不能把第...
关于C语言的二维数组作为函数参数的问题?
int arr[n][m];实际上相当于:int n=2,m=3;int (*arr)[m];所以,传递二维数组作为参数,实际上就是传递了一个指针。将形参的类型定义成int*,再在函数内部转换回指向数组的指针就行了,比如:void f(int *p,int row,int column){ int (*arr)[column]=(int (*)[column])p;//使用二...
c语言中怎么用二维数组作为函数参数
二维数组作为函数参数,实参可以直接使用二维数组名,在被调用函数中对形参数组定义可以指定所有维数的大小,也可以省略第一维的大小说明,如:它们是合法且等价,也可以使用如下形式:但不能省略第二维的大小,如下面的定义是不合法的,编译时会出错:因为从实参传递来的是数组的起始地址,如果在形参中不说...
C语言中 指针做函数参数传递二维数组
void fun(int (*p1)[3],int (*p2)[3]);int main(){ int p1[3][3]={{7,8,9},{4,5,6},{1,2,3}} ;int p2[3][3] = {0};int i = 0, j = 0;fun(p1,p2);for(i = 0;i < 3;i++){ for(j = 0;j < 3;j++){ printf("%d ",*(*(p2+i)+j));} prin...
c语言中的结构体二维数组做参数问题
1、如果在函数外定义的结构数组,又要在一个函数中进行输入、输出,通常情况下,其参数传递类型需要传址,即 void shuchu(struct std **cansu);void shuchu(struct std *cansu[]);这样调用改为 shuchu(&aa);对函数内的相应操作改为指针操作即可。2、通常情况下,对于一个系统设计而言,其输入...
二维数组使用指针变量做函数参数是什么意思? 在什么情况下,函数参数才...
所以如果定义一个函数,参数二维数组,那么至少要指定列数,比如:void p (int a[2][3])//正确void p (int a[][3])//正确void p (int a[][])//错误void p (int a[2][])//错误那么如果你想要用指针来做参数传递二维数组,那你需要定义一个指向数组(大小等于二维数组列数)的指针,...
ICCAVR单片机C语言关于二维数组的问题?
ASCII是一个指向二维数组的指针常量。声明uchar (*ip2)[2]数组指针(看过有些书称之为行指针),ip2=ASCII;这样就可以通过编译并引用ASCII数组了。二维数组在函数调用时可以做实参进行参数传递。被调函数可以这样声明 void exmpl_fun(uchar (*pAryASCII)[2]);;也可以这样void exmpl_fun(uchar pAry...
用C语言编写一个函数,计算二维数组中的最大元素,数组以指针方式传递...
int max(int arry[][100],int n){ int i,j,value;for (value=arry[0][0],i=0;i<n;i++)for(j=0;j<n;j++)if (arry[i][j]>value) value=arry[i][j];return value;} int main(){ int a[100][100];int i,j,n,value;scanf("%d",&n);for (i=0;i<n;i++)f...
C语言,函数中如何返回二维数组,用return和不用return两种方法?
return 就直接返回可以了 不用return 就将二维数组的指针或者引用作为参数