通过引用C传递2D数组并修改值

时间:2017-04-26 17:56:39

标签: c pointers ansi-c

我试图将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]);

    }

1 个答案:

答案 0 :(得分:1)

这不是你如何声明一个在C中接收matriz的函数。 函数原型应该是:

void changeMatrix(char matrix[2][2]);

忽略括号中的第一个数字。 你应该调用这样的函数:

char C[2][2];
changeMatrix(C);

就是这样,因为请记住数组的名称是数组中第一个元素的地址。声明为char C[n][m]的矩阵是一个n * m个位置的数组,其中前m个位置属于第一列,依此类推。

矩阵只是一种一维数组。