首页 > 编程语言 >C++中如何返回数组类型数据

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

时间:2023-11-06 17:34:20浏览次数:24  
标签:返回 int C++ 示范 ++ 数组 test01 data

错误示范:

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

相关文章

  • C++逃离陨石
    题目描述在公元\(114514\)年小朱在学校里上课,突然听见学校广播播放一条骇人听闻的消息:一群陨石将袭击我市,由于陨石积过大数量多,它们无法在撞击到地面前燃烧殆尽,将会对它撞到的一切东西造成毁灭性的打击。小朱同志开始担心自己的安全问题。他一定要在被流星砸到前,到达一个......
  • C++最自信的鱼
    题目描述人比人,气死人;鱼比鱼,难死鱼。小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度。参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只鱼的可爱程度,很显然整数越大,表示这只鱼越可爱,而且任意两只鱼的可爱程度可能一样。由于所有的鱼头都......
  • C++U5-04-广度优先搜索1
    广搜逻辑  广搜代码核心思路 广搜伪代码 思维导图1、[【广搜】走迷宫] 求最少需要多少步,考虑使用广搜。从起点开始进行搜索,规则只能向上下左右走动,当搜索到终点时就结束。广搜的核心思路:初始化一个队列和数组将起点入队并标记当队列不为空且没到终点的时候 取......
  • 数据结构与算法-数组
    什么是数组在每一种编程语言中,基本都会有数组这种数据类型。不过,它不仅仅是一种编程语言中的数据类型,还是一种最基础的数据结构是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据数组的特点低效的插入和删除数组为了保持内存数据的连续性,会导致插入......
  • L-4: 34--在排序数组中查找元素的第一个和最后一个位置
    给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1,-1]。你必须设计并实现时间复杂度为 O(logn) 的算法解决此问题。 示例1:输入:nums=[5,7,7,8,8,10],tar......
  • C++使用冒泡排序算法对数组进行排序
     #include<iostream>//包含iostream库usingnamespacestd;//使用标准命名空间intmain(){//主函数intarr[]={5,3,2,8,6,7,1,4};//定义并初始化数组intn=sizeof(arr)/sizeof(arr[0]);//计算数组长度//使用冒泡排序算法对数组进......
  • java数组最大值
    参考文章:java数组求最大值在Java中,你可以通过遍历数组元素来找到数组中的最大值。以下是两种常见的方法:使用循环遍历数组publicclassMain{publicstaticvoidmain(String[]args){int[]array={10,5,8,2,7};//假设数组的第一个元素是最大......
  • 实验三 类与指针、数组
    1#pragmaonce2#include<iostream>34usingstd::cout;56usingstd::endl;78classPoint{910public:11Point(intx0=0,inty0=0);12~Point()=default;13intget_x()const;14intget_y()const;15vo......
  • 实验三:类与数组、指针。
    实验任务11#pragmaonce23#include<iostream>4usingstd::cout;5usingstd::endl;67classPoint{8public:9Point(intx0=0,inty0=0);10~Point()=default;1112intget_x()const;13intget_y()const;14......
  • isNaN(1/0) 返回值是false
    任何数值除以0都会导致错误而终止程序执行。但是在JavaScript中,会返回出特殊的值,因此不会影响程序的执行。比0大的数除以0,则会得到无穷大,所以js用Infinity来显示出来。也就是1/0得到的是Infinity。isNaN(1/0)返回的是false。但是isNaN(0/0)返回的就是true......