gpt4 book ai didi

C - 在函数中分配矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 05:28:13 25 4
gpt4 key购买 nike

我正在尝试使用采用其维度和三重指针的函数来分配矩阵。我已经分配了一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com