错误示范:
int* test01() {
int data[3] = { 1,2,3 };
return data;
}
int main() {
int* result = test01();
for (int i = 0; i < 3; i++) {
cout << result[i] << '\t';
}
}
正确示范:
int* test01() {
// int data[3] = { 1,2,3 };
int* data = new int[3];
for (int i = 0; i < 3; i++) {
data[i] = i + 1;
}
return data;
}
int main() {
int* result = test01();
for (int i = 0; i < 3; i++) {
cout << result[i] << '\t';
}
}
分析:
返回数组类型本质上是返回一个地址,而错误示范中的数组是声明的是一个局部变量,随着程序跳出方法,局部变量会随之释放,因此后面打印出一些奇怪的数据
正确示范中new出的对象是声明在堆区的,堆区数据不会随程序跳出方法就立马被释放。
标签:返回,int,C++,示范,++,数组,test01,data From: https://www.cnblogs.com/wanshengxiaobai/p/17813242.html