该程序功能:调用函数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]吗?
请问根据首地址是怎么将a[3][4]中所有的数据替代给b[i]的啊?因为觉得b[i]是一维函数,所以这样替代之后b[i]只有三个数???