用C语言编写矩阵乘法函数,但是最后输出有问题
编写一个3*3的c矩阵和3*1的a向量的乘法,做为函数在主函数中调用,将a向量的地址传入函数中,做乘法运算,将结果放入3*1的b向量中,并依次打印,最后返回值为b的地址,在主函数中将b的地址赋值给一个指针,通过这个指针输出b向量中的三个数据,但是最后通过指针输出的数据和在函数中依次打印的数据不同,这是为什么?编写另外一个程序,就是在函数中,将b中的元素赋值给a,返回a的地址,这种方法打印出来结果就是相同的,
程序代码:#include <stdio.h>
int process(int a[])
{
float b[3],c[3][3]={1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9};
int i,j;
for (i=0;i<3;i++)
{
float sum=0;
for(j=0;j<3;j++)
{
sum=sum+c[i][j]*a[j];
}
b[i]=sum;
printf("%f\n",b[i]);
}
return b;
}
int main()
{
int a[3],i;
float *p;
for(i=0;i<3;i++)
{
scanf("%d",&a[i]);
}
p=process(a);
for(i=0;i<3;i++)
{
printf("%f ",*p++);
}
return 0;
}
此时打印出来是这样的结果
修改的代码主要是这一部分:
程序代码:{
float c[3][3]={1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9};
int j=0,i=0;
float b[3];
for (i=0;i<3;i++)
{
float temp=0;
for(j=0;j<3;j++)
{
temp=temp+c[i][j]*a[j];
}
b[i]=temp;
printf("%f\n",b[i]);
}
for(i=0;i<3;i++)
{
a[i]=b[i];
}
return a;
}输出结果是这样的:
请问这是什么问题?希望前辈给予解答!谢谢









