我试图将2x2字符矩阵传递给我的函数,以便我可以在其中修改它的值。在我的代码中,唯一改变的值是矩阵的第一行,第1行它不会改变。
在控制台中,我的结果是
C[0] = ab
C[1] =
所以C [1]没有在我的函数中更新,请帮我弄清楚发生了什么。
这是代码
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
void changeMatrix(char (*matrix)[2][2]){
strcpy(*matrix[1], "cd");
strcpy(*matrix[0], "ab");
}
int main(){
char C[2][2];
changeMatrix(&C);
printf("C[0] = %s \n", C[0]);
printf("C[1] = %s \n", C[1]);
}
答案 0 :(得分:1)
这不是你如何声明一个在C中接收matriz的函数。 函数原型应该是:
void changeMatrix(char matrix[2][2]);
忽略括号中的第一个数字。 你应该调用这样的函数:
char C[2][2];
changeMatrix(C);
就是这样,因为请记住数组的名称是数组中第一个元素的地址。声明为char C[n][m]
的矩阵是一个n * m个位置的数组,其中前m个位置属于第一列,依此类推。
矩阵只是一种一维数组。