gpt4 book ai didi

c - 段错误,c 程序

转载 作者:行者123 更新时间:2023-11-30 20:13:48 27 4
gpt4 key购买 nike

为什么这些代码会返回段错误?我在网上搜索但找不到问题所在。能否请你帮忙?是因为指针malloc错误吗?

void multiply(int **a, int n, int m, int **b, int m2, int p, int **c)
{
int i, j, k;
for (i = 0; i < n; i++){
for (j = 0; j < p; j++){
for (k = 0; k < m; k++){
c[i][j] += a[i][k] * b[k][j];
}
printf("%d", c);}}
}
main()
{
int **a, **b, **c;
int n, m, p;
int i, j;
scanf("%d", &n); scanf("%d", &m); scanf("%d", &p);
a = (int **)malloc(n*sizeof(int*));
for (i = 0; i < n; i++){
a[i] = (int*)malloc(m*sizeof(int));}
for (i = 0; i < n; i++){
for (j = 0; j < m; j++){
scanf("%d", &a[i][j]);}
}
b = (int **)malloc(m*sizeof(int*));
for (i = 0; i < m; i++){
b[i] = (int *)malloc(p*sizeof(int));}
for (i = 0; i < m; i++){
for (j = 0; j < p; j++){
scanf("%d", &b[i][j]);}
}
c = (int **)malloc(n, sizeof(int));
for (i = 0; i<n; i++)
c[i] = (int *)malloc(p, sizeof(int));
multiply(a, n, m, b, m, p, c);
free(a);
free(b);
free(c);
}

谢谢^^

我编辑了一些代码,现在它是正确的。非常感谢你们。干杯!

最佳答案

如果你使用的是 LP64 架构(int 是 32 位,int* 是 64 位),c 太小,你应该使用

c = (int **)calloc(n, sizeof(int*));

关于c - 段错误,c 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28837746/

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