
已解决问题
谷歌korgbt用户在2021.11.05提交了关于“医统江山c语言,指向二维数组的指针变量”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-27T17:23:51。希望大家能够帮助她。详细问题描述及疑问:期待您的答案,滴水之恩,来日我当涌泉相报 !
详细问题描述及疑问:期待您的答案,滴水之恩,来日我当涌泉相报 !
先
第一,来详细介绍二维数组与指针的关系。-
首
若p=array[0],此时p指向的是二维数组第一行的首地址,则p+i
ForExa
array[4][3]={{1,2,3},{4,5,6},{7,8,9},{
int*p=array
数组array有四个元
如array[
元素array[2][2]对应指针为:array+2*3+2,
指针表示法为:*(array+2*3+2),
下标表示法为:array[2*3+2]。
特别注意:虽
第二,看看如何用数组名
对二维数组array,array[0]由arra
注意:数组名虽然是地
第三,顺便了解一下不太常用的‘行数组指针’。
对于二维数组array[4][3],与int*p。二维数组名array不能直接赋值给p。原因前面已讲过,两只的对象性质不同。在C语言中,可以通过定义一个行数组指针,使得这个指针与二维数组名具有同样的性质,实现它们之间可以直接赋值。行数组指针定义如下:
int(*p)[3];它表示,数组*p具有三个int类型元素,分别为(*p)[0],(*p)[1],(*p)[2],即p指向的是具有三个int类型的一维数组,也就是说,p为行指针。此时,以下运算p=array是正确的。
第四,二维数组作为函数参数。
二维数组作为函数参数一般有两种方式:(1)voidfunc(int**array){}(2)voidfunc(intarray[][N])
注意第二种方式一定要指明二维数组的列数
当二维数组名作为函数实参时,对应的形参必须是一个行指针变量。
和一维数组一样,数组名传送给变量的是一个地址值,因此,对应的形参也必须是一个类型相同的指针变量,在函数中引用的将是主函数中的数组元素,系统只为形参开辟一个存放地址的存储单元,而不可能在调用函数时为形参开辟一系列存放数组的存储单元。
intmain()
doublea[3][4];
……
fun(a);
……
fun(double(*a)[n])
……