标题:指向变i量的指针和指向一位数组的指针的一点疑问
取消只看楼主
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
结帖率:96.77%
已结贴  问题点数:20 回复次数:1 
指向变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
一个孩子
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.059592 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved