gpt4 book ai didi

c++ - 为什么我不能返回数组?

转载 作者:太空狗 更新时间:2023-10-29 20:13:17 25 4
gpt4 key购买 nike

我试图从函数返回指向数组的指针,但我遇到了问题。当我尝试这样输出时:

#include <iostream>

using namespace std;

int* Somma_Array(int[],int[],int);

int main()
{
int n;
cin>>n;
int A[n],B[n];
for(int i=0;i<n;i++)cin>>A[i];
for(int i=0;i<n;i++)cin>>B[i];
int *c=Somma_Array(A,B,n);
for(int i=0;i<n*2;i++)cout<<c[i];
}

int* Somma_Array(int v[],int p[],int size)
{
int r[size*2];
for(int i=0;i<size;i++)r[i]=v[i];
for(int i=0;i<size;i++)r[i+size]=p[i];
return r;
}

它打印奇怪的数字而不是实际数字。我试着做什么this问题说,但它不起作用。它给了我以下警告:

[Warning] address of local variable 'r' returned [enabled by default] 

我正在使用 bloodshed dev-c++。

最佳答案

您定义了一个堆栈分配数组r,当您退出函数Soma_Array 时,它会被销毁。这是 vector 优于普通数组的(许多)原​​因之一 - 它们为您处理分配和释放。

#include <vector>

std::vector<int> getArray()
{
std::vector<int> a = {1, 2, 3};
return a;
}

关于c++ - 为什么我不能返回数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22413835/

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