在不使用阵列大小的情况下反转阵列

Reversing Array Without Using Array Size

本文关键字:阵列 情况下      更新时间:2023-10-16

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

但我的问题是:如果只给数组一个指针,是否可以反转数组?

(在C++btw中)

编辑

这个问题显然是在洛克希德·马丁公司的一次采访中提出的。请参阅此处

通常情况下,答案是。只有像NULL终止的字符数组这样的所谓终止数组才有可能:

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;
   }
}

不,这是不可能的。如果你不知道数组的大小,那么你就无法反转它。

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

没有。在不知道大小的情况下,就无法使用迭代器来反转它;如果不使用迭代程序,也不知道大小,就不可能反转特定的数组。您必须声明另一个数组,将第一个数组中的内容复制到新数组中,并对新数组执行内容反转。