【发布时间】:2018-03-10 19:39:36
【问题描述】:
我是 C 新手,我只是不知道如何在函数中修改二维数组。 这是我尝试过的代码:
void init_matrix(int **M) {
M[0][0] = 1;
}
int main(void) {
int M[3][3];
init_matrix(M, 3);
return 0;
}
(请注意,为了专注于这个问题,此代码是自愿删除的,我需要我的函数能够处理全局未知大小的数组(尽管它可能是函数的参数))
当我尝试运行它时,它只是卡住了......调试器说这是在这个内存槽中写入的权利问题。
您将如何以 C 精神编写 init_matrix 函数?
为什么我的矩阵不能写?
我希望尽可能少使用“高级”概念和功能。
提前致谢 =)
【问题讨论】:
-
你必须列出你的编译器。
void init_matrix(int **M)和init_matrix(M, 3);-- 这张照片有什么问题? “寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题是没有用的给其他读者。见:How to create a Minimal, Complete, and Verifiable example。”
标签: c function multidimensional-array parameter-passing