【发布时间】:2012-12-10 04:35:43
【问题描述】:
以下代码正在打印垃圾值。我将一个数组传递给一个向每个元素添加 5 的函数,但是当它返回该数组的指针时,main 显示垃圾。
我已经在 main 中尝试了索引和指针,但结果仍然相同。我该如何解决这个问题?
# include <conio.h>
# include <iostream>
using namespace std;
int * add5ToEveryElement(int arr[], int size)
{
int theArray[5];
for(int i=0; i<size; i++)
{
theArray[i] = arr[i] + 5;
cout<<theArray[i]<<endl;
}
return theArray;
}
void main()
{
const int size = 5;
int noArr[size];
for(int i=0; i<size; i++)
{
noArr[i] = i;
}
int *arr = add5ToEveryElement(noArr, size);
cout<<endl;cout<<endl;
for(int i=0; i<size; i++)
{
cout<<arr[i]<<endl;
}
cout<<endl;cout<<endl;cout<<endl;cout<<endl;
for(int i=0; i<size; i++)
{
cout<<*arr<<endl;
*arr++;
}
getch();
}
【问题讨论】:
-
@Mat o no sir,它不是重复的,这是我面临的问题,搜索并没有帮助我
-
同样的问题。您正在返回一个指向自动(基于堆栈)数组的指针。
-
好吧,那个家伙没有像我一样使用索引是更新版本,而不是重复:P
-
@Asadullah 你有什么理由不使用
std::vector而不是数组吗? -
@jogojapan 先生,没有理由,但我正在教别人数组如何工作以及它们如何传递给函数并从函数返回:)
标签: c++ arrays function pointers return