指向变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。但是我感觉这样解释很牵强,希望高手能给我指点下,最好把指向一维数组的指针的用法给我说下,小弟不胜感激!