数组翻转指针

时间:2013-05-10 16:01:40

标签: c++ arrays pointers

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

     

3 7

     

5 2

  

5 2

     

3 7

     

4 1

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

3 个答案:

答案 0 :(得分:2)

只需颠倒整个事物然后反转每一行:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

以前的答案中描述了更好的方法。所以我的答案将解决为什么输出中没有任何变化。你交换指针而不是值。你想做的事:

temp = *ptr2;     
*ptr2 = *ptr1;     
*ptr1 = temp;

--ptr2;
++ptr1;