标题:指向变i量的指针和指向一位数组的指针的一点疑问
只看楼主
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
结帖率:96.77%
已结贴  问题点数:20 回复次数:3 
指向变i量的指针和指向一位数组的指针的一点疑问
来看下这段代码:


#include<stdio.h>
void average(float *p,int n)
{
    float *p_end;
    float sum=0;
    float aver;
    p_end=p+n-1;
    for(;p<=p_end;p++)
    {
        sum=sum+(*p);
    }
    aver=sum/n;
    printf("%5.3f  ",aver);
}
void search(float (*p)[4],int n)
{
    int i,j;
    int flag;
    for(i=0;i<n;i++)
    {
        flag=0;
        for(j=0;j<4;j++)
        {
            if(*(*(p+i)+j)<60)
                flag=1;
        }
        if(flag==1)
        {
            printf("NO.%d fails ,his scores are :\n",i+1);
            for(j=0;j<4;j++)
            {
                printf("%5.1f",*(*(p+i)+j));
                printf("\n");
            }
        }
    }
}
int main(void)
{
    float score[3][4]={{65,57,70,60},{58,87,90,81},{90,99,100,98}};
    average(*score,12);
    printf("\n");
    search(score,3);
    printf("\n");
    return 0;



}

疑问:average(*score,12);这段代码加上了*,而search(score,3);里面的没有,我想了半天,我觉得可能是这样的:
形参接收的都是初始地址,而average(float *p,int n)里的指针是指向变量的,如果只写score的话,只是把score【0】的地址给它 这样就错了 ,所以必须再加一个*来吧第一个元素的地址传递给p。但是我感觉这样解释很牵强,希望高手能给我指点下,最好把指向一维数组的指针的用法给我说下,小弟不胜感激!


搜索更多相关主题的帖子: search include average void 
2012-10-14 22:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:10 
你看的都是这种代码学习啊?怪不得总不上路。
理解那些东西是什么意思,关键是函数原型,两个都是数组指针。这程序把代码写成这样,都算是奇葩,大脑不知是什么构造的人写出来的。

授人以渔,不授人以鱼。
2012-10-14 23:36
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
得分:10 
因为score是二维数组,因此加个*score就是一维数组了,可以认为是score的一行元素。这个问题你要搞清楚的话,可以去看指针与二维数组的关系。

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2012-10-15 07:08
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
得分:0 
这是谭浩强书上的例题,呵呵,谢谢啦。

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-10-15 21:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-383200-1-1.html




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

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