【发布时间】:2012-10-23 07:32:32
【问题描述】:
我有一个函数,就是将矩阵和向量相乘:
double *matrix_vector_multiply(int rows, int cols,
double **mat, double *vec)
{
double *answer = malloc(rows * sizeof (double));
int i,j;
for (i=0; i<rows; rows++)
ans[i]=0;
for (i=0; i<rows; rows++){
for (j=0; j<cols; cols++)
{
answer[i] = answer[i] + mat[i][j] * vec[j];
}
}
return ans;
}
我的输出一直都是 0.. 关于如何修复它的任何想法?
【问题讨论】:
-
(i) 为了你好,习惯成语
sizeof( *answer )而不是sizeof( double ); (ii) 发布一个我们可以运行和测试的示例。 (iii) 您返回并初始化的ans未在任何地方声明;相反,您声明和修改answer。 (iv) 每次循环迭代,您增加rows和cols,但您的索引是i和j;这些循环是如何结束的? -
为什么要增加 for 循环中的行数和列数,而不是增加 i 和 j?我错过了什么吗?
-
你为什么要问一个基本上围绕相同问题的新问题?请先阅读有关基本 C 的内容,然后再提出有关此类问题的问题。并且请不要通过使用 2D 数组的仿真来开始编程 C。你有指向指针的指针,这些是不同的东西。至少从更简单的事情开始,学习如何正确使用
for循环之类的东西,通过 SO 处理这些事情对每个人来说都是浪费时间,包括你在内。