在不使用数组大小​​的情况下反转数组

时间:2015-04-08 17:46:18

标签: c++ arrays pointers reverse

在给定指向数组的指针和数组大小的情况下,反转数组相对容易。

但我的问题是:只有指向数组的指针才可以反转数组吗?

(在C ++ btw中)

修改

这是洛克希德·马丁在接受采访时明显提出的一个问题。见here

4 个答案:

答案 0 :(得分:2)

一般来说,答案是。 它只能用于所谓的终止数组,如以NULL结尾的char数组:

void reverse(char* str)
{
   int end = -1;
   int front = -1;

   while (str[++end] != NULL);  

   while (--end > ++front)
   {   
      char temp = str[end];
      str[end] = str[front];
      str[front] = temp;
   }
}

答案 1 :(得分:0)

不,不可能。如果您不知道阵列的大小,那么您就无法逆转它。

答案 2 :(得分:0)

如果你定义一个"终止符"对于您的数组元素类型,例如\ 0用于char数组。您应始终使用该值结束数组,否则您将获得运行时错误。但是使用大小或避免数组和使用向量总是更好,因为你使用c ++而不是c。

答案 3 :(得分:0)

不。在不知道大小的情况下,你不能使用迭代器来反转它而不使用迭代器而不知道大小,就不可能反转那个特定的数组。您必须声明另一个数组,将第一个数组中的内容复制到新数组中,然后在新数组上执行反向内容。