用数组指针作为函数的参数
#include
void main()
{
void average(float *p,int n);
void search(float(*p)[4],int n);
float score[3][4]={{65,67,70,60},{98},{94}};
average(*score,12);..........求学生的总成绩
search(score,2); ..............求学号为2的成绩
}
average(float*p,int n)函数定义了一个一维指针,但是一维指针是不能直接指向二维数组的,所以在参数传递时不能直接传递数组名score,
传递的是*score,*score=*(&score[0])=score[0]=&score[0][0],即二位数组首元素的地址,可以将二维数组当做一维数组处理
具体函数如下:
void average(float *p,int n)
{ float *p_end;
float sum=0;
p_end=p+n-1;
...
}
而search函数用数组指针接受二维数组,数组指针式一个二维指针
对数组的元素输出格式为:*(*(p+n)+j);(n=2)
第一步:p从首元素向后跳跃2*4个地址,指向为score[2],即&score[2][0]
第二步:从score[2]向后指,每次跳跃一个地址,所以*(p+n)+i,表示&score[2][i]
第三步:间接操作符运算,*&score[2][i]=score[2][i].
阅读(846) | 评论(0) | 转发(0) |