首页 > 解决方案 > 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 应该改变传入数组的第一个数字和最后一个。然后,第二个数字应该与传入的倒数第二个数字匹配。返回类型应该是我相信的指针。这项任务并不像颠倒数字并称之为退出那么容易。显然你没有为此动态创建内存或创建一个新数组,所以我真的迷路了。在此先感谢大家,希望我能够提供足够的信息。

标签: c++arraysfunctionarguments

解决方案


好的,这是您要查找的代码:

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 时,您不需要返回指针,因为您拥有它。


推荐阅读