为什么我在这个函数中遇到段错误:
#include <stdio.h>
#include <stdlib.h>
#include "math.h"
vec_t mtrx_multiple (sparse_mat_t a, vec_t c) {
vec_t result;
int i;
result.n = a.n;
printf("result.n: %d\n", result.n);
result.vec = malloc(a.n * sizeof *result.vec);
for(i=0; i<a.n; i++)
result.vec[i] = c.vec[i] * a.a[a.ja[i]];
return result;
}
结构是:
typedef struct {
int n;
int *vec;
} vec_t;
typedef struct {
int *a;
int *ia;
int *ja;
int n;
} sparse_mat_t;
感谢帮助
最佳答案
我怀疑问题出在 a.a[a.ja[i]]
上,您应该在使用值a.ja[i]
进行索引之前尝试验证它们a.a
.
了解a
是如何初始化的以及在哪一行发生段错误将会很有用。
关于c - 向结构添加元素时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2105847/