首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++中多维数组码中的错误

C++中多维数组码中的错误
EN

Stack Overflow用户
提问于 2015-02-28 15:28:32
回答 2查看 44关注 0票数 0

我最近一直在修改我的编码技巧,然后我编写了一个程序,输出多维数组的内容。这很简单,但是当我尝试使用代码时,发生了这样的事情:

代码语言:javascript
运行
复制
int dv[3][3] {
    {1,2,3},
    {4,5,6},
    {7,8,9}
};
for (auto col = dv; col != dv + 3; ++col) {
    for (auto row = *dv; row != *col + 3; ++row) {
        cout << *row << " ";
    }
}

输出:

代码语言:javascript
运行
复制
1 2 3 1 2 3 4 5 6 1 2 3 4 5 6 7 8 9

有人能告诉我为什么会这样吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-28 15:33:11

为什么我的代码输出如此?

您的错误在第二个循环初始化中:auto row = *dv;。这样做,你就会有系统地回到起点。然后,你去*col + 3。从这个角度看:

第一圈转弯:

代码语言:javascript
运行
复制
col = dv;
row = *dv;

打印每个数字直到row == *col + 3 输出:1 2 3

第二圈转弯:

代码语言:javascript
运行
复制
col = dv + 3;
row = *dv;

打印每个数字直到row == *col + 3,但coldv + 3 输出:1 2 3 4 5 6 ->它从一开始就开始了(dv)

转1和2转的总输出: 1 2 3 1 2 3 4 5 6

试一试:

代码语言:javascript
运行
复制
for (auto col = dv; col != dv + 3; ++col) {
    for (auto row = *col; row != *col + 3; ++row) { // (1)
        cout << *row << " ";
    }
}

// (1) : Starting at current `column` then printing until `column + 3`

活动示例https://ideone.com/Y0MKrW

票数 2
EN

Stack Overflow用户

发布于 2015-02-28 15:33:14

您的内环从*dv开始。这可能不是你想要做的。

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

https://stackoverflow.com/questions/28783373

复制
相关文章

相似问题

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