#include <stdio.h>
float matrix(float *a[3], int n)
{
float sum = 0;
int i,j;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++){
if(i == j || (i + j == n - 1))
{
sum+=a[i][j];
}
}
return sum;
}
int main()
{
int i,j;
float a[3][3],(*p)[3];
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++){
scanf("%f",&a[i][j]);
}
p = a;
printf("sum=%0.2f \n", matrix(p,3));
return 0;
}
如上,程序在p=a处或printf("sum=%0.2f \n", matrix(p,3));处会报错,但是若在开头将*a[]改为(*a)[],程序正常运行,这是为什么?