【发布时间】:2017-04-26 17:56:39
【问题描述】:
我正在尝试将 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]);
}
【问题讨论】:
-
字符串需要 3 个字符的空间 - 2 个字母 + '\0'(字符串终止符)。
-
就是这样。非常感谢你。但是现在位置 1 带有一些垃圾。 C[0] = ab C[1] = t�cd
-
不需要那些指针的东西。删除所有
*和&。 -
是的,现在它正在工作。谢谢
-
如果您确实通过了
matrix,请注意第二行是(*matrix)[1]。您的*matrix[1]前进到整个二维数组的末尾,然后取消引用。