C - 在函数中分配矩阵

标签 c function matrix malloc

我正在尝试使用采用其维度和三重指针的函数来分配矩阵。我已经分配了一个 int**(设置为 NULL)并将其地址作为函数的参数传递。由于某种原因,这给了我一个内存访问冲突。

void allocateMatrix(int ***matrix, int row, int col)
{
    int i;
    if((*matrix = (int**)malloc(row * sizeof(int*))) == NULL)
    {
        perror("There has been an error");
        exit(EXIT_FAILURE);
    }
    for(i = 0; i < row; ++i)
    {
        if((*matrix[i] = (int*)malloc(col * sizeof(int))) == NULL)
        {
            perror("There has been an error");
            exit(EXIT_FAILURE);
        }
    }
}

/* main.c */

    int** matrix = NULL;
    allocateMatrix(&matrix, MATRIX_ROW, MATRIX_COL); //error

最佳答案

你需要改变

if((*matrix[i] = (int*)malloc(col * sizeof(int))) == NULL)

if(((*matrix)[i] = (int*)malloc(col * sizeof(int))) == NULL)
//  ^       ^

在使用数组下标之前,您需要取消引用matrix
*matrix[i] 等价于*(matrix[i])

关于C - 在函数中分配矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16004668/

相关文章:

c - 如何扫描除第一行以外的行中的值

c - 为什么在 c 中使用 rand() 时每个子进程都生成相同的 "random"数字?

c - 结构和字符串

c++ - 由函数分配并用于创建数组 C++ 的常量变量

python - 将 python 字典转换为逗号分隔键字符串和逗号分隔值字符串的优雅方法是什么?

ios - 添加每个 UITableViewCell 单元格中每次出现的键

c - 关于C中文件流和缓冲区的问题

C++程序在随机位置无故停止

python - Scipy 稀疏矩阵 - 不同实现的目的和用法

flash - 如何准确绘制旋转位图?