c++ - C++ 使用指针返回一个数组
问题描述
为我的 c++ 课程做一个初学者编码作业。我还很新,指针让我有点磕磕绊绊。我试图用我的代码做的是让函数 intSwapper 使用指针返回一个数组。由于无法正常返回数组,因此我必须使用指针,但我仍在尝试弄清楚如何使其工作。
int* intSwapper(int* inputArray, int size) {
for (int i = 0; i < size; i++) {
int* p = &inputArray[i];
int* j = &size;
//The static int I created below was just to test if I could even return what I needed.
static int arr[size] = { 3,4,5,9,1 };
int* p2 = arr;
return arr;
delete p;
delete p2;
}
}
上面的代码甚至不起作用,让我说,这只是失败和测试不同事物的组合。我想要实现的事情是通过函数传递大小和数组,函数 intSwapper 应该改变传入数组的第一个数字和最后一个。然后,第二个数字应该与传入的倒数第二个数字匹配。返回类型应该是我相信的指针。这项任务并不像颠倒数字并称之为退出那么容易。显然你没有为此动态创建内存或创建一个新数组,所以我真的迷路了。在此先感谢大家,希望我能够提供足够的信息。
解决方案
好的,这是您要查找的代码:
void intSwapper(int* inputArray, int size) {
int temp;
for (int i = 0; i < size / 2; i++) {
temp = inputArray[i];
inputArray[i] = inputArray[size - 1 - i];
inputArray[size - 1 - i] = temp;
}
}
所以指针指向内存中的某个地址。该数组是内存中具有连续地址的一些值。数组由指向第一个元素的指针表示。inputArray 是指针。inputArray[0] 为您提供 inputArray 地址中的值(第一个元素), inputArray[1] 为您提供第二个元素,依此类推......所以 intSwapper 做了什么 - 你从第一个元素到中间,然后交换第一个 <-> last、第二个 <-> last-1 等元素的地址中的值。temp 变量是必需的,因此在将 inputArray[size - 1 - i] 分配给它之后,您不会丢失 inputArray[i] 的值。理解这段代码很重要,如果你不能,谷歌搜索“c++ array tutorial”之类的东西。此外,当您将指针传递给 intSwapper 时,您不需要返回指针,因为您拥有它。
推荐阅读
- smtp - Gmail 上的网络解决方案别名:TLS 协商失败,证书与主机不匹配
- python - Python:argparse 的解析器是否有等效于 logging.getLogger(__name__) 在模块之间传递参数的方法?
- c - 程序仅适用于 .h 文件中的 {} 符号
- javascript - Discord bot 意外结束输入
- python - 模型子类化忽略附加到 Python 列表的 Keras 层的权重
- python - 如何在 Jupyter 中将图形图像导出为 pdf?
- matlab - (0:2):4 和 0:(2:4) 有什么区别?
- c# - 禁用面板中的按钮会触发面板中单选按钮上的 CheckedChanged 事件
- css - CSS - 如何在内容垂直扩展时扩展英雄背景 div/图像的大小
- c# - 使用 MySqlConnector 的 MySqlBulkCopy 将数据表上传到 MySql。抛出异常