【发布时间】:2021-07-28 10:02:16
【问题描述】:
简单的数组循环没问题,但是用指针循环多维数组的正确方法是什么?
#include <iostream>
int main(int argc, char* argv[])
{
int data1[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9};
for(auto *p = data1; p!=data1+9; ++p)
{
std::cout << (*p) << ' ';
}
std::cout << std::endl;
int data2[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
for(auto *lineP = data2; lineP!=data2+3; ++lineP)
{
for(auto *p = &(lineP[0]); p!= &(lineP[3]); ++p)
{
std::cout << (*p) << ' ';
}
std::cout << std::endl;
}
}
在这里data1 循环通过正确产生预期的输出。但是data2 循环在某些方面是错误的,因为输出不是元素的值,而是地址。
示例输出:
1 2 3 4 5 6 7 8 9
0x7ffde45b77a0 0x7ffde45b77ac 0x7ffde45b77b8
0x7ffde45b77ac 0x7ffde45b77b8 0x7ffde45b77c4
0x7ffde45b77b8 0x7ffde45b77c4 0x7ffde45b77d0
【问题讨论】:
标签: c++ arrays for-loop pointers