标题:用指向数组的指针作函数参数(实参带不带*的问题)求助!
只看楼主
nugongshou
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-8-26
结帖率:0
已结贴  问题点数:20 回复次数:5 
用指向数组的指针作函数参数(实参带不带*的问题)求助!
#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
人_神
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:44
专家分:103
注 册:2013-8-1
得分:5 
score 不加*代表意义为函数名,加上*意义与score[0]相同
两者在计算时,都是数组首元素的地址,即score==score[0]==&score[0][0].
不同之处在于两者的可见域不同。例如:
score+1为移动到数组尾即score+1==&score[2][3]+1
score[0]+1==&score[1][0]
这是本人理解,如有错处请指出
2013-08-26 22:56
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
liufashuai
Rank: 9Rank: 9Rank: 9
来 自:冥界-魔域-魂殿
等 级:蜘蛛侠
威 望:1
帖 子:370
专家分:1374
注 册:2012-6-22
得分:5 
*score通俗讲score数组的第一个元素
利用指针的观点就是score指向的值,也就是数组第一个值

*score = *(score+0) = score[0]
一切从本质看,不要因为复杂就乱了分寸。这是学工科的大忌!

有一种落差是,你配不上自己的野心,也辜负了所受的苦难。






2013-08-27 00:07
jg658237
Rank: 7Rank: 7Rank: 7
来 自:青藏高原
等 级:黑侠
帖 子:224
专家分:529
注 册:2013-8-8
得分:5 
*score代表数组的元素。

武功再高也怕菜刀.
2013-08-27 00:29
lzj12530
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:264
专家分:841
注 册:2013-3-28
得分:5 
score代表二维数组的首地址&score[0][0]
*score代表第一行元素的首地址&score[0]

C++菜鸟
2013-08-27 12:54



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




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

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