在不使用阵列大小的情况下反转阵列
Reversing Array Without Using Array Size
在给定指向数组的指针和数组大小的情况下,反转数组相对容易。
但我的问题是:如果只给数组一个指针,是否可以反转数组?
(在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.
没有。在不知道大小的情况下,就无法使用迭代器来反转它;如果不使用迭代程序,也不知道大小,就不可能反转特定的数组。您必须声明另一个数组,将第一个数组中的内容复制到新数组中,并对新数组执行内容反转。
相关文章:
- 在没有太多条件句的情况下,我如何避免被零除
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 在未初始化映射的情况下,将值插入到映射的映射中
- 是默认情况下分配给char数组常量的值
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在已经使用Git的情况下减少编译时间
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 如何在没有信号的情况下从C++执行QML插槽
- 如何在不知道向量大小的情况下输入向量内部的向量?
- 为什么在某些情况下不写入此文件?
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 在没有Xcode的情况下在Mac捆绑包中嵌入框架
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 为什么在这种情况下递增阵列名称有效?
- 在不知道大小的情况下通过2d阵列
- 在没有2D阵列的情况下从矩阵文件中读取坐标
- 在不使用阵列大小的情况下反转阵列
- 使用客户端顶点阵列在没有VBO的情况下在opengl 3.1+中进行渲染
- 如何在没有STL的情况下从2d阵列中删除任何未填充的插槽