当前位置: 首页 > news >正文

C++:如何实现数组元素逆置?多种方法

方法1:使用额外的数组 这是一种比较简单的方法,它创建一个额外的数组来存储逆置后的元素,然后将其复制回原始数组。

#include <iostream>void reverseArray(int arr[], int size) {int reversed[size];for (int i = 0; i < size; i++) {reversed[i] = arr[size - 1 - i];}for (int i = 0; i < size; i++) {arr[i] = reversed[i];}
}int main() {int myArray[] = {1, 2, 3, 4, 5};int size = sizeof(myArray) / sizeof(myArray[0]);reverseArray(myArray, size);for (int i = 0; i < size; i++) {std::cout << myArray[i] << " ";}return 0;
}

方法2:使用两个指针 这种方法使用两个指针,一个指向数组的开头,另一个指向数组的末尾,然后交换它们指向的元素,逐步向中间移动。

#include <iostream>void reverseArray(int arr[], int size) {int start = 0;int end = size - 1;while (start < end) {// 交换元素int temp = arr[start];arr[start] = arr[end];arr[end] = temp;// 移动指针start++;end--;}
}int main() {int myArray[] = {1, 2, 3, 4, 5};int size = sizeof(myArray) / sizeof(myArray[0]);reverseArray(myArray, size);for (int i = 0; i < size; i++) {std::cout << myArray[i] << " ";}return 0;
}

这两种方法都可以成功逆置数组中的元素。选择哪种方法取决于您的需求和性能要求。方法2通常更节省内存,因为它不需要额外的数组来存储逆置后的元素。

小傻瓜提问:第一种方法为啥不会发生我操作的是localvariable而导致原数组不改变的问题

在第一种方法中,确实会创建一个名为 reversed 的局部数组,然后将逆置后的元素复制回原始数组 arr。这是因为数组在C++中是传值的,函数参数 arr 接受了原始数组的一个副本,而不是原始数组本身。因此,对 reversed 数组的操作不会影响原始数组 myArray

在这种情况下,逆置是在 reversed 数组中进行的,然后再将其内容复制回原始数组。这样做确保了原始数组不会被修改,因为它们是不同的内存位置。

提问:第二种我操作的那个函数为啥不用加&?

在第二种方法中,不需要使用 & 运算符来传递数组的地址,因为数组名本身在C++中被解释为指向数组的首元素的指针。

当您在函数参数中使用数组名时,实际上是将指向数组的首元素的指针传递给函数,而不是整个数组的副本。因此,在 reverseArray 函数中,arr 参数是一个指向数组的指针,它指向传递给函数的原始数组。

因此,在函数中对 arr 操作实际上就是在原始数组上进行操作。您无需使用 & 运算符来获取数组的地址,因为数组名本身已经是一个指向数组的指针。

http://www.lryc.cn/news/177771.html

相关文章:

  • php框架thinkPHP6的安装教程
  • PTA程序辅助实验平台——2023年软件设计综合实践_3(分支与循环)
  • 【C语言数据结构】线性表-链式存储-单链表
  • tp8 Editor.md
  • LM小型可编程控制器软件(基于CoDeSys)笔记三十一:保持变量和非保持变量
  • 「C++之STL」关于在模拟实现STL容器中的深浅拷贝问题
  • 文件内容显示
  • Milvus+Attu
  • LeetCode算法二叉树—226. 翻转二叉树
  • AI项目十:Swin Transformer目标检测环境搭建
  • 【IPC 通信】信号处理接口 Signal API(5)
  • Arduino PLC IDE
  • 记录使用iText7查找PDF内容关键字坐标,加盖电子签名、印章
  • Java8实战-总结37
  • 【超详细】前段开发之详细的Vue3入门教程,特别适合小白系统学习,入门到熟练使用Vue看这一篇就够了!
  • 【深度学习】ONNX模型多线程快速部署【基础】
  • Python 同、异步HTTP客户端封装:性能与简洁性的较量
  • 无代码赋能数字化,云表搭桥铺路链接“数据孤岛”
  • 无需公网IP,实现公网SSH远程登录MacOS【内网穿透】
  • 网络爬虫学习笔记 1 HTTP基本原理
  • 113. 路径总和ii
  • 百度APP iOS端包体积50M优化实践(六)无用方法清理
  • MySQL了解视图View (视图篇 一)
  • 使用applescript自动化trilium的数学公式环境
  • idea中maven项目打包成jar,报错没有主清单属性解决方法
  • Caddy Web服务器深度解析与对比:Caddy vs. Nginx vs. Apache
  • 基于PHP+MySQL的家教平台
  • 吉利微型纯电,5 万元的快乐
  • Gitee使用方法
  • 前端适配笔记本缩放125%,150%导致页面错乱问题