gpt4 book ai didi

c - 动态分配的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 02:50:34 25 4
gpt4 key购买 nike

我使用 malloc 函数编写了一些代码并制作了结果文件,但它显示了段错误。你能给点建议吗?

获取mn值,用a_ij=n矩阵生成m i*i+j*j.

    #include"stdio.h"
#include"stdlib.h"
#include"malloc.h"

int i,j,m,n;
float **a, sum;
float func(float **a,int m,int n);
FILE *out;

int main()
{
printf("Enter the value of m and n: \n");

scanf("%d",&m);
scanf("%d",&n);

for(i=0; i<m; i++) a[i]=(float *)malloc(n*sizeof(float));

printf("o\n");

for(i=0; i<m; i++)
for(j=0; j<n; j++)
a[i][j]=0;

func(a,m,n);

printf("\n matrix A: \n");
for (i=0; i<m; i++)
{
for (j=0; j<n; j++)
printf("%f\t", a[i][j]);
printf("\n");
sum=sum+a[i][j];
}
printf("\n SUM: %f",sum);

out=fopen("outFile","w");
fprintf(out,"\n matrix A: \n");
for (i=0; i<m; i++)
{
for (j=0; j<n; j++)
printf("%f\t", a[i][j]);
printf("\n");
}
fprintf(out,"\n SUM: %f", sum);
fclose(out);

return 0;

}

float func(float **a,int m,int n)
{
for(i=0; i<m; i++)
for(j=0; j<n; j++)
a[i][j]=(i+1)*(i+1)+(j+1)*(j+1);

return;
}

以及如何更正此程序以使其正常工作?

最佳答案

您忘记在程序开头分配指针数组a

首先分配保存指向行的指针的数组:

a = (float**)malloc(m*sizeof(float*));

然后为每一行分配内存:

for(i=0; i<m; i++) {
a[i] = (float*)malloc(n*sizeof(float));
}

关于c - 动态分配的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22560369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com