该程序功能:调用函数f,求二维数组a中全体元素之和。 #include <stdio.h> fl

该程序功能:调用函数f,求二维数组a中全体元素之和。
#include <stdio.h>
float f(float *x[],int m,int n) //
{ float y=0; int i,j;
for(i=0;i<m;i++) for(j=0;j<n;j++) y=y+*(*(x+i)+j);
return y;
}
void main()
{ float a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*b[3];
int i;
for(i=0;i<3;i++) b[i]=*(a+i); //
printf("%.2f\n",f(b,3,4));
}
这个编程里主函数定义时的*b[3]是b[3][]的意思吗? 为什么在下面的循环里是b[i]=a[i],这样不是只定义了三个数b[0][1]、b[0][2]、b[0][3]吗?

这个编程里主函数定义时的*b[3]不是b[3][]的意思,它定义了一个含有3个int指针的指针数组,
for(i=0;i<3;i++) b[i]=*(a+i); 这个循环使b[]数组保存了a[0],a[1],a[2]的首地址。追问

请问根据首地址是怎么将a[3][4]中所有的数据替代给b[i]的啊?因为觉得b[i]是一维函数,所以这样替代之后b[i]只有三个数???

温馨提示:答案为网友推荐,仅供参考