我是C语言的新手,我不明白为什么我不能轻松地填充2d数组。
这是我的代码:一个函数填充矩阵,另一个显示矩阵。
#include <stdio.h>
int matrix[5][5];
int size = 5;
void fill_matrix() {
for(int k=0; k<size; k++) {
for(int l=0; l<size; l++) {
matrix[k][l] = k + l;
}
}
}
void print_matrix() {
for(int k=0; k<size; k++) {
for(int l=0; l<size; l++) {
printf("%d ", *matrix[k,l]);
}
printf("\n");
}
}
int main() {
fill_matrix();
print_matrix();
}
结果就是这个
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
代替这个
0 1 2 3 4
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
我知道答案可能非常简单,但是几个小时后我找不到解决方案,所以我在这里。
答案 0 :(得分:0)
您打算做的是matrix[k][l]
,以解决矩阵的行和列。
*matrix[k,l]
代表您所拥有的。这里发生的是在表达式中使用逗号运算符来索引数组。表达式的结果等于逗号运算符右侧的结果,因此,有效的是*matrix[l]
。 matrix[l]
仅对二维数组使用一个索引,将您指向数组的第l
行,因此它实际上是int[5]
类型的行。然后,当您用星号取消引用它时,您将获取该行的第一个元素的内容。