[C++]局部定义的指针变量返回变空悬指针(dangling pointer)

#include<iostream>
using namespace std;


int *test_array(int *a){
	int length = sizeof(a)/sizeof(a[0]);
	int *b = new int [length];
	for (int i = 0; i < length; ++i)
	{
		*b++=a[i];
	}
	return b;
}
int main(){
	int a [5] = {1,2,3,4,5};
	int *b = test_array(a);
	
	for (int i = 0; i < 5; ++i)
	{
		cout<<b[i]<<endl;
	}
	return 0;
}

输出:

0
0
0
24
51

就像这样,因为虽然返回了一个指针,但是这个指针指向的对象在函数返回时已经销毁了,因此返回的值是不确定的。如果接下来还想用,那么得用引用的方法传参。

posted @ 2018-08-15 16:41  zengzhaocheng  阅读(615)  评论(0编辑  收藏  举报