我对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 我知道答案可能非常简单,但几个小时后我无法找到解决办法,所以我来到这里
发布于 2019-09-24 21:27:51
您要做的是通过matrix[k][l]来处理矩阵的行和列。
相反,你所拥有的,*matrix[k,l]。这里发生的是表达式中使用逗号运算符来索引数组。表达式的结果等于逗号操作符右侧的结果,所以实际上是*matrix[l]。matrix[l]只对二维数组使用一个索引,它指向数组的l第四行,因此本质上是int[5]类型。然后,当您用星号取消它的引用时,您将获取该行第一个元素的内容。
https://stackoverflow.com/questions/58088136
复制相似问题