读书人

求问一个关于指针的奇怪有关问题

发布时间: 2013-11-18 00:11:49 作者: rapoo

求问一个关于指针的奇怪问题

#include <iostream>

using namespace std;

int* getPrime()
{
int a[2];
a[0] = 2;
a[1] = 5;
return a;
}

int main()
{
int *a;
a = getPrime();
cout << a[0];
cout << a[1];
}

这段代码,根据调试,在函数返回之后还是一切正常的,但是在输出第一个数之后,整个数组都会变得混乱,请问这是为什么,完全不能理解啊……
PS:如果在函数中使用动态数组则一切正常
[解决办法]
因为int a[2]是一个局部变量,当函数执行完以后,也就会释放了这快内存空间的!
之后再访问就是无效的数据了,数据是什么是不可预测的

当然可以

int *a = (int *)malloc(sizeof(int) * 2);

//记得使用完 free就好!

读书人网 >C++

热点推荐