首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C中基体污染

C中基体污染
EN

Stack Overflow用户
提问于 2019-09-24 21:05:21
回答 1查看 80关注 0票数 0

我对C很陌生,我不明白为什么我不能轻松地填充一个2d数组。

下面是我的代码:一个函数填充矩阵,另一个函数显示它。

代码语言:javascript
复制
#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();
}

结果就是

代码语言:javascript
复制
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 

而不是这个

代码语言:javascript
复制
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 

我知道答案可能非常简单,但几个小时后我无法找到解决办法,所以我来到这里

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-24 21:27:51

您要做的是通过matrix[k][l]来处理矩阵的行和列。

相反,你所拥有的,*matrix[k,l]。这里发生的是表达式中使用逗号运算符来索引数组。表达式的结果等于逗号操作符右侧的结果,所以实际上是*matrix[l]matrix[l]只对二维数组使用一个索引,它指向数组的l第四行,因此本质上是int[5]类型。然后,当您用星号取消它的引用时,您将获取该行第一个元素的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58088136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档