二维数组传参为题。为什么报错,
#include<stdio.h>
int main()
{
void average(float *,int);
void search(float**,int);
search(score,2);
getchar();
return 0;
}
void search(float **p,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");
} 二维数组 传参 **p 数组 指针
[解决办法]
main()函数里,search(score,2); 这一句,score未定义,应该是一个float类型的二维数组吧,比如:float score[大于2的数][4]={/*初始化*/};
[解决办法]
传的参数score变量定义在那里呢?
楼主,找本基础点c语言书好好看看吧!
[解决办法]
他们俩把你的问题说出来了,但是还有个很大的问题,就是你里面打印printf("%5.2f ",*( (*p+n)+i));用这个可以?我个人觉得是不行的,二维数组本质上还是以以一维存储的!你再看看指针运算
(*p+n) = *p + (szieof(*p)* n)= 什么呢?*p是你二维数组的第一个元素,至于后面的就不用我说了吧,你也觉得不行了!
我个人觉得打印二维数组要不传递个一级指针,和一个int数= row*col;比如
int p[2][3];
print(int *p,int n);
调用就是print(p,2*3);至于内部如何用,就是一个for循环了
第二种print(int *p[3],int cow)数组名作为参数时退化为指针,这个不是很准确,他只能退化一维的
print(int *p[3],int cow)== print(int p[2][3],int cow),因此我们还需要另外传递一个参数来表示行号。有疑问1179675084