本文主要是介绍C++返回数组时要注意的地方,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转载:https://my.oschina.net/superpdm/blog/183134=
看以下代码:
#include <stdio.h>
using namespace std;
int* f()
{int ch[2];ch[0]=0;return ch;
}
void f1()
{int ch[2];ch[0]=1;
}
void f2()
{double a=10.288;
}
int main()
{int* aa=f();cout<<aa[0]<<endl;f1();cout<<aa[0]<<endl;f2();cout<<aa[0]<<endl;getchar();
}
0
1
-13377
数组ch的首地址指针是指向栈上面的一段内存,这段内存在f函数结束后,就已经被系统忽略了。那么这个空间在程序运行过程中,很有可能被重新分配值,因此aa[0]就可能变成任意的值,而不是我们所希望的那个数组了。
正确的做法是用new来分配,这样得到的数组是在堆上面分配的。当然最后空间要自己释放。
int *f()
{
int *a=new int[2];
a[0]=1;
return a;
}
这篇关于C++返回数组时要注意的地方的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!