gpt4 book ai didi

c++ - 返回指针的问题

转载 作者:行者123 更新时间:2023-11-28 01:50:51 25 4
gpt4 key购买 nike

我正在尝试复制数组的拷贝,但新拷贝需要倒序排列。我的问题是我的 reverse 函数,我评论了错误说明的内容,但我不明白为什么要这样说明?如果copy是一个指针变量呢?我仍在为指点而苦苦挣扎,我真的只是想澄清一下我做错了什么。我还没有制作反向指针变量,我打算在弄清楚为什么会出现此错误后这样做。

这是函数

int* reverse(int elements, int size)
{
int* copy = new int [size];
int k =0;
for(int j=size-1; j >=0;j--)
{
copy[k] = size[j]; // Error-> Subscripted value is not an array,pointer or vector
k++;
}
return copy;
}

这是没有函数的完整代码,

#include <iostream>

int* allocation(int);
void output(int*, int);
int* reverse(int*, int);

int main()
{
int size;
std::cout << "Enter the size you want to allocate" << std::endl;
std::cin >> size;
int* array = allocation(size);
std::cout << "Displays the elements of the array";
output(array,size);
return 0;
}

void output(int* array, int size)
{
for(int k=0;k<size;k++)
{
std::cout << " " << array[k];
}
}

int* allocation(int elements)
{
int* ptr = new int[elements];
std::cout << "Enter the elements for size of array." << std::endl;
for(int i =0; i < elements; i++)
{
std:: cin >> ptr[i];
}
return ptr;
}

最佳答案

reverse 函数的问题是您没有将指针传递给必须以相反顺序复制的源数组。相反,您传递了两个 int

错误

Error-> Subscripted value is not an array,pointer or vector

当您尝试通过向其添加下标 size[j]size 用作数组时发生,这很明显,因为 sizeint 类型而不是指针、数组或 vector

我已经从

更改了你的函数的签名
int* reverse(int elements, int size)

int* reverse(int *elements, int size)

我已经修改了你的函数看起来像这样

int* reverse(int *elements, int size)
{
int* copy = new int [size];
for(int j=size-1, k=0; j >=0; j--, k++)
{
// copy from elements and not size, elements is the array containing
// the values to be copied, size denotes the size of the array
copy[k] = elements[j];
}
return copy;
}

旁注:

  1. 我还将 k 放在 for 循环的范围内。
  2. 您可能想使用 std::vectorstd::array 而不是使用原始数组
  3. 我看到您在定义函数 int* reverse(int*, int);
  4. 时使用了正确的签名

关于c++ - 返回指针的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43083853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com