Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12529
  • 博文数量: 5
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 24
  • 用 户 组: 普通用户
  • 注册时间: 2015-01-18 09:09
个人简介

嘿嘿~

文章分类

全部博文(5)

分类: C/C++

2015-01-19 11:00:55

用数组指针作为函数的参数
#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].









阅读(811) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:C语言中一个SIZEOF和STRLEN的例子

给主人留下些什么吧!~~