【发布时间】:2013-12-29 16:33:34
【问题描述】:
我想通过指向主函数的指针返回在本地函数中创建的数组。我的代码如下。返回数组,我只能逐个元素访问每个元素一次。下一次它给出垃圾值。怎么了?
void DoWork(int** ppOut , int& nSize)
{
int m[5];
for(int i = 0 ; i < 5 ; i++)
{
m[i] = i;
}
nSize = 5;
cout << m[0] << endl;
cout << m[1] << endl;
cout << m[2] << endl;
cout << m[3] << endl;
cout << m[4] << endl;
*ppOut = &m[0];
//delete [] m;
}
void main()
{
int nSize = -1;
int i;
int* f = NULL;
DoWork(&f , nSize);
cout << f[3] << endl;
cout << f[0] << endl;
cout << f[2] << endl;
cout << f[3] << endl;
cout << f[4] << endl;
_getch();
}
输出是:-- 本地函数的 0 1 2 3 4。 但在主要 3 和其余部分是抓取值
【问题讨论】:
-
大量未定义的行为、非法和/或非标准 C++。您的主要问题是您正在存储指向临时的指针。
main()总是返回int。_getch()肯定是非标准的(使用std::cin.ignore()代替)。 -
@OP:为什么不 google 这个...(不,请不要告诉我它很难搜索。我对这种废话不感兴趣。 )
-
@H2CO3:因为在谷歌上搜索需要了解要搜索的内容。
标签: c++