C -2D矩阵分配函数segfault(param返回的矩阵)



在尝试编写矩阵的第二行(segfault exc_bad_accesskern_invalid_address)时,我遇到了问题:

这是我的同种功能:

int amatrix(char*** m, const int i, const int j) 
{
    int k;
    (*m) = (char**) malloc(sizeof(char*) * i);
    if ((*m) == NULL) {
        return ERROR;
    }
    for (k = 0; k < i; k++) {
        (*m)[k] = (char*) malloc(sizeof(char) * j);
        if ((*m)[k] == NULL) {
            return ERROR;
        }
    }
    return SUCCESS;
}

我通过使用:

来称呼它
char** matrix;
if (amatrix(&matrix, i, j)) { ...

编辑:根据要求:

#define ERROR 00
#define SUCCESS 01

麻烦的访问:

int gmatrix(char*** m, const int i, const int j)
{
int k, l;
for (k = 0; k < i; k++) {
    for (l = 0; l < j; l++) {
        printf("Matrix[%d][%d] = ", k, l);
        scanf(" %c", m[k][l]);
    }
}
return SUCCESS;
}

谢谢您的快速回复!

您的 gmatrix函数应以 mchar**参数,而不是 char***,因为它不需要像 amatrix那样更改其值(仅指向)。

然后,您应该将SCANF调用更改为:

scanf(" %c", &m[k][l]);

您当前的代码(使用char*** m)无效,因为m[k]k!=0时会产生未定义的行为,因为m仅指向一个char**

如果mchar***,则SCANF调用需要看起来像:

scanf(" %c", &(*m)[k][l]);

相关内容

  • 没有找到相关文章

最新更新