遍历带指针的多数组

时间:2013-05-08 12:51:54

标签: c++ arrays pointers

for ( j = 0; j < d1; j++ ){

    m += j;
        for ( i = 0; i < d1*d2; i +=d2){
        cout << *(m+i);
        }
    cout << endl;
}

d1,d2是数组维度

int* m = new int [d1*d2];

我想遍历我的数组并简单地分组和打印列。无法想象这段代码有什么问题。在下面的例子中,直到第3次迭代才能正常工作:

假设我的输入值为1 2 3 4 5 6 7 8 9

我明白了:

1 4 7

2 5 8

4 7 (something random)

2 个答案:

答案 0 :(得分:4)

m += j;

您首先将m递增0,然后递增1,然后递增2.如果我们最初使用副本

int *start = m;

然后在外循环的第一次迭代中,我们有

m == start

在第二个,

m == start + 1

在第三个

m == start + 3

你想要m == start + 2。除非您希望最后m保留delete,否则您不应该更改m,而是使用类似

的内容
for ( j = 0; j < d2; j++ ){

        for ( i = j; i < d1*d2; i +=d2){
        cout << *(m+i);
        }
    cout << endl;
}

答案 1 :(得分:1)

m = &a[0];
for ( j = 0; j < d1; j++ )
{
    for ( i = 0; i < d2; i++)
        cout << *m++;
    cout << endl;
}