在给定指向数组的指针和数组大小的情况下,反转数组相对容易。
但我的问题是:只有指向数组的指针才可以反转数组吗?
(在C ++ btw中)
这是洛克希德·马丁在接受采访时明显提出的一个问题。见here
答案 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)
不。在不知道大小的情况下,你不能使用迭代器来反转它而不使用迭代器而不知道大小,就不可能反转那个特定的数组。您必须声明另一个数组,将第一个数组中的内容复制到新数组中,然后在新数组上执行反向内容。