C++中如何返回数组类型数据

错误示范:

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出的对象是声明在堆区的,堆区数据不会随程序跳出方法就立马被释放。

posted @ 2023-11-06 17:22  晚生小白  阅读(256)  评论(0)    收藏  举报