c - 数组元素的不需要的更改值是 C 中第二个数组的地址/元素数量

标签 c arrays

我遇到了一个让我很困惑的问题。我想要一个稀疏矩阵存储在 3 个数组中并执行矩阵/vector 乘法。 Matrix 和 vectorB 在文件中是红色的。这就是背景。问题在于不需要更改作为 double 组“参数”的整数数组元素的值。这是我正在做的事情:

int row[ELEMENTS_NO] = {0};
int col[ELEMENTS_NO] = {0};
double values[ELEMENTS_NO] = {0.0};
double vectorB[M_SIZE] = {0.0};
double res[M_SIZE]={0.0};

...reading row,col,values, from the file...

printf("\n row[0]:%d, col[0]:%d",row[0],col[0]);

for (k = 0; k < ELEMENTS_NO; k++) {
        res[row[k]] = res[row[k]] + values[k]*vectorB[col[k]];
    }

printf("\n\n\n row[0]:%d, col[0]:%d",row[0],col[0]);

第一次打印的输出是正确的:

row[0]:1, col[0]:1

而第二次打印给出了以下输出:

row[0]:1352932126, col[0]:1

为什么执行for循环后col数组的值改变了?如何解决我的问题并保持 row 和 col 元素不变?

感谢您提供有用的信息!

最佳答案

检查 row[k] 的值并确保它在 0 到 ELEMENTS_NO 之间

关于c - 数组元素的不需要的更改值是 C 中第二个数组的地址/元素数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29572095/

相关文章:

javascript - 将对象从数组添加到表中

java - 如何从数据库[Cursor Adapter]获取值并将其存储到java中的数组中?

c - C 中带有指向结构体和结构体数组的指针的随机结果

c - 在 tmp 文件夹中打开文件时使用信号量不起作用

c - 这段 C 代码是如何工作的?

r - 如何使用维度名称向量选择张量(多维数组)的一部分?

C 奇怪的数组行为

python - 如何加速 numpy 数组上的函数

c - 我的strtok()实现(C)有什么问题?

c - C语言中的非上下文无关语言的例子?