标题:用指向数组的指针作函数参数(实参带不带*的问题)求助!
取消只看楼主
nugongshou
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-8-26
结帖率:0
已结贴  问题点数:20 回复次数:1 
用指向数组的指针作函数参数(实参带不带*的问题)求助!
#include <stdio.h>
void main()
{
    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);
    search(score,2);
}

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");
}

  average函数的实参(*score,12)为什么要加上*呢?
  我试下不加*也对
  有点搞不明白了,望大神指点迷津

搜索更多相关主题的帖子: average include search 
2013-08-26 22:18
nugongshou
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-8-26
得分:0 
回复 2楼 人_神
谢谢帮助
我又看了看书,貌似明白了
score+1=score[1]=&score[1][0]
score[1]+1=&score[1][1]
我理解的是这样
在多维数组中如果加* 比如*score 就是把score[0][0]的首地址传入
如果不加*的话 就是把score[0]的首地址传入
我理解的对吗?
2013-08-26 23:02



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




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

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