使用指针翻转数组

array flipping with pointers

本文关键字:数组 翻转 指针      更新时间:2023-10-16
int* m = new int [d1*d2]; 

   ptr1 = m; 
    ptr2 = m + (d2*(d1-1));
     if ( *ptr1 != *ptr2){  
       temp = ptr2;     
       ptr2 = ptr1;     
       ptr1 = temp;
    }
ptr1 +=d2;
ptr2 -= d2;

为了做

4 1

7

3

5 2

5 2

7

3

4 1

这是我到目前为止想出的,几乎什么都没有。我在寻找适合的循环时遇到了问题

把整行倒过来,然后每行倒过来:

row/col representation:
4 1 => 2 5 => 5 2
5 2    1 4    4 1
actual layout of m:
4 1 5 2 => 2 5 1 4 => 5 2 4 1

需要两个循环,一个用于要翻转的行,然后翻转该行上的每个元素。当翻转3x2矩阵时,int row从0到2,int column从0到1

在前面的回答中已经描述了更好的方法。所以我的回答将解释为什么你的输出没有任何变化。你交换的是指针而不是值。你要做的是:

temp = *ptr2;     
*ptr2 = *ptr1;     
*ptr1 = temp;
--ptr2;
++ptr1;