对于用指向多维数组的指针做函数参数一些认识

                      对于用指向多维数组的指针做函数参数一些认识

首先,我们知道,一维数组可以作为函数参数,同时,多维数组也可以作为函数参数,用来接收实参组名传来的地址。可以有两种方法:用指向变量的指针变量和用指向一维数组的指针变量做函数参数,下面对于这两种方法做基本的阐述。
一、定义描述
(一)、用指向变量的指针变量做函数参数 首先,我们定义一个二维数组source[3][4],定义一个返回值为指针数据类型的函数:*search(int p)。当我们用指向变量的指针变量做函数参数时,我们传递的是数组首行、首列元素的首地址。因此,在函数内进行操作时,我们可以通过(p+i)来操作第i个数组元素,来返回他的地址。
(二)、用指向一维数组的指针变量做函数参数 同样,定义一个二维数组source[3][4],,定义一个返回值为指针数据类型的函数:*search(int (p)[4])。此时,我们在操作这个函数时,传递给函数的是首行的地址,因此,在函数体内部,(p+i)才指的是第i行首元素的地址。
二、应用举例:寻找第k名同学的成绩
(一)、用指向变量的指针变量做函数参数
int main()
{ int *search(int *p,int n);
int source[3][4]={{99,99,99,99},{99,99,99,99},{88,88,88,88}};
int k,i;
int *p;
scanf("%d",&k);
p=search(source,k);
for(i=0;i<4;i++)
{
printf("%d ",
(p+i));
}
}int *search(int *p,int n)
{
int *flag;
flag=p+(n-1)*4;
return flag;
}
(二)、用指向一维数组的指针变量做函数参数
int main()
{
int *search(int (*p)[4],int x);
int source[3][4]={{99,99,99,99},{99,99,99,99},{88,88,88,88}};
int k,i;
int p;
scanf("%d",&k);
p=search(source,k);
for(i=0;i<4;i++)
{
printf("%d ",
(p+i));
}
}
int *search(int (*p)[4],int x)
{
int flag;
flag=
(p+x-1);
return flag;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值