| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 490 人关注过本帖
标题:新手求助 指向数组的指针作函数参数的问题!
只看楼主 加入收藏
菜鸟auto
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:100
注 册:2010-7-23
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:4 
新手求助 指向数组的指针作函数参数的问题!
#include<stdio.h>
int main(void)

{
    void average(float *p,int n);
    void search(float(*p)[4],int n);
    float score[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}};
    average(*score,12);//为什么average函数的实参是*score 而不是 数组名score。
    search(score,2);//为什么这个函数就可以用数组名score呢?


}


void average(float *p,int n)

{
    float *p_end;
    float sum=0,aver;
    p_end=p+n-1;
    for(;p<=p_end;p++)
        sum=sum+(*p);
    aver=sum/n;
    printf("average=%5.2f\n",aver);
}


void search(float (*p)[4],int n)

{
    int i;
    printf("the score of No.%d are:\n",n);
    for(i=0;i<4;i++)
        printf("%5.2f  ",*(*(p+n)+i));
    printf("\n");
}
搜索更多相关主题的帖子: search 
2011-03-03 09:30
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:2 
一个是传值一个是传址.
2011-03-03 10:12
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
收藏
得分:8 
    void average(float *p,int n); //这个p是一个指针,但这个指针只能指向float类型的数据。
    void search(float(*p)[4],int n); //这个p也是一个指针,但这个指针指向的是一个float[4]一维数组。
    float score[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}}; //score是一个二维数组名称,其本质是一个“指向一个float[4]的指针常量”
    average(*score,12);//*score等价与score[0],这个score[0]相当与一个“指向float”的指针,这与average()的形参中的第一个参数类型一致。
    search(score,2);//前面说了,score是一个“指向一个float[4]的指针常量”,正好与search()中的第一个形参类型一致。
请楼主在找找有关指针与数组方面的帖子(老虫参与回复的帖子)看看。上面说的只是结论,其所需要的基本知识在那些帖子中。

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-03-03 10:28
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
收藏
得分:0 
以下是引用广陵绝唱在2011-3-3 10:12:16的发言:

一个是传值一个是传址.
应该说,这两个传递的都是值,不过值的性质是地址。
在C语言中,函数形参与实参只有一种传递方式:值传递。
至于值的性质,可以是普通的数值,也可以是地址,还可以是结构体实例。

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-03-03 10:30
菜鸟auto
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:100
注 册:2010-7-23
收藏
得分:0 
回复 3楼 犬虫门心
谢谢解答1
2011-03-03 18:28
快速回复:新手求助 指向数组的指针作函数参数的问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024568 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved