无法从 'double' 转换为 'double (*)'

标签 c matrix

我正在尝试编写一个代码来查找给定矩阵的逆矩阵。 我不断收到同样的错误:

错误 5 错误 C2440:“function”:无法从“double”转换为“double (*)”

这是我的代码,不确定它是否有效:

int swap_rows(double mat[SIZE][SIZE], int row1, int row2)
{
    int i, j, temp;
    for (j = 0; j < SIZE; i++)
    {
        temp = mat[row1][j];
        mat[row1][j] = mat[row2][j];
        mat[row2][j] = temp;
    }
    return 0;
} 

int subtract_rows(double mat[SIZE][SIZE], int row1, int row2, double mul)
{
    int i;
    for (i = 0; i < SIZE; i++)
    {
        mat[row1][i] = mat[row1][i] - mul*mat[row2][i];
    }
    return 0;
}

int inverse_matrix(double mat[][SIZE], double inv[][SIZE], int size)
{
    int i, j, k, w;
    double c, b;
    for (i,j = 0; i,j < SIZE; i++)
    {
        if (mat[i][j] = 0)//cheking to see left is not zero
        { 
            for (k = i + 1; k < SIZE; k++)//if zero swap rows with one that not zero
            {
                if (mat[k][j] != 0)
                {
                    swap_rows(mat, i, k);//swap
                    swap_rows(inv, i, k);
                }
                else
                    return 0;//didnt find not zero return and exit
            }
        }
        c = mat[i][j];// c is the left number
        for (k = 0; k < SIZE; k++)
        {
            mat[i][k] /= c;//divide everyone by c, now i have one
            inv[i][k] /= c;
        }
        for (k = 0; k < SIZE; k++)
        {
            b = mat[k][j];
            if (k != i)
            {
                if (mat[k][j] > 0)
                {
                    subtract_rows(mat[SIZE][SIZE], k, i, b);// ***error points to this line***
                    subtract_rows(inv[SIZE][SIZE], k, i, b);
                }
                else
                {
                    subtract_rows(mat[SIZE][SIZE], k, i, -b);
                    subtract_rows(inv[SIZE][SIZE], k, i, -b);
                }

            }
        }
    }
return 0;
}

有人能看出问题出在哪里吗?

最佳答案

mat[SIZE][SIZE] 使用下标运算符对 mat 进行索引,产生 double .
不过,double mat[][SIZE] 是一个double*[SIZE]
明显不匹配。

要将数组(无论如何都会转换为指针)传递给函数,只需使用 mat:

subtract_rows(mat, k, i, b);

对其他 subtract_rows 调用执行类似的操作。

关于无法从 'double' 转换为 'double (*)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33872775/

相关文章:

c - 为什么系统调用 chdir() 不接受以 "~"开头的路径名?

python - 从对列表中制作 Numpy 对称矩阵

python - 从每个列表中删除第三个元素和第二个元素,并查找二维列表中最后一个元素在特定范围内的列表

c - 我应该采取什么预防措施来制作不调用未定义行为的内存池?

c - 如何使用 % 表示 float ?

c - 为什么过早访问 ReadFileEx 的输入缓冲区会导致数据损坏?

c - 重新分配内存会导致下一个大小无效

python - 如何在 Python 中对图形进行聚类?

r - 使用大型数据集在 R 中创建二元矩阵

java - 初级 boolean 编译错误