C语言:*a[]和(*a)[]的区别 70
#include<stdio.h>floatmatrix(float*a[3],intn){floatsum=0;inti,j;for(i=0;i<n;i++)for(j...
#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)[],程序正常运行,这是为什么? 展开
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)[],程序正常运行,这是为什么? 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询