当前位置: 首页 > article >正文

new 分配空间;引用

一、new 

new 操作符是分配堆区内存空间的,delete释放

// 开辟一个 int型 并初始化为100
int* type1()
{   
	int* p = new int(100);
	return p;
}

 // 开辟一个 整形数组
int* type2()
{
	int* arr = new int[10];
	for (int i = 0; i < 10; i++)
		arr[i] = i + 1;

	return arr;
}


int main()
{
	int* p = type1();
	cout << *p << endl;

	int* arr = type2();
	for (int i = 0; i < 10; i++)
		cout << arr[i] << ' ';

	// 释放 new开辟的内存
	delete p;
	p = NULL;

	delete[] arr;
	arr = NULL;

	return 0;
}

new 的返回值是开辟空间的地址

二、引用

1、基本使用:  类型 &别名=原名 ,对应同一地址

int main()
{
	int a = 10;
	cout << "a前的值:" << a << endl;

	int& b = a;
	b = 20;

	cout << "a后的值:" << a << endl;
    cout << "b的值:" << b << endl;

// 10 20 20

	return 0;
}

二、注意事项

①、一定要初始化

②、引用后,不能改变

int a=10; 

in c=100;

int &b =a;        √

 int &b;           ×

int &b = c ;   ×

三、引用做函数参数:

引用也是将同一地址给了出去

// 指针接收
void Swap_1(int* a, int* b)
{
	int c = *a;
	*a = *b;
	*b = c;
}
// 引用
void Swap_2(int& a, int& b)
{
	int c = a;
	a = b;
	b = c;
}

int main()
{
	int a = 10;
	int b = 99;

	cout << "交换前:" << a <<' ' << b << endl;

	Swap_1(&a, &b);
	Swap_2(a, b);

	cout << "交换后:" << a<<' ' << b << endl;

	return 0;
}

得出的结果一样

四、引用做函数的返回值

int& test()
{
    // 不能返回局部变量的引用、地址
	static int a = 10;
	return a;
}

int main()
{
	int& ret = test();
	cout << "ret = " << ret << endl;
	cout << "ret = " << ret << endl;

	test() = 999;
	//当 引用作为函数返回值,这个函数调用可以作为左值
	cout << "ret = " << ret << endl;
	cout << "ret = " << ret << endl;

	return 0;
}

五、引用的本质:

本质是 : 指针常量

int main()
{
	int a = 10;

	// 本质 int* const ret = &a;
	int& ret = a;

	// 本质: *ret = 100;
	ret = 100;

	cout << a << ' ' << ret << endl;

	return 0;
}

本质是 :int* const ret = &a;  所以引用初始化后不能改变指的地方,但是可以改变值

🚗🚗 🚗  🚗   🚗    🚗     🚗      🚗


http://www.kler.cn/a/450105.html

相关文章:

  • 快速部署一套Kubernetes集群
  • 远程控制macOS一直卡在100%,能连接上了却只显示了壁纸?
  • 【点估计】之Python实现
  • 【QSS样式表 - ⑥】:QPushButton控件样式
  • 如何利用Python爬虫获得1688按关键字搜索商品
  • UE5仿漫威争锋灵蝶冲刺技能
  • 电气设计 | 低压接地系统:TN-C 、TN-S、TN-C-S、TT适用哪些场所?
  • vue中proxy代理配置(测试二)
  • 大模型面试快问快答
  • 设计模式--抽象工厂模式【创建型模式】
  • 利用Spring Cloud Gateway Predicate优化微服务路由策略
  • 【wordpress】建立数据库连接时出错,您看到此页面,则表示您在 wp-config.php 文件中定义的用户名和密码信息不正确,或是……
  • QT——day1
  • 畅捷通-条件竞争
  • 前端开发 之 12个鼠标交互特效上【附完整源码】
  • 120页PPT讲解ChatGPT如何与财务数字化转型的业财融合
  • Scala_【2】变量和数据类型
  • 批量生成二维码,助力数字化管理-Excel易用宝
  • Debezium日常分享系列之:Debezium 3.0.5.Final发布
  • 腾讯云云开发 Copilot具有以下优势
  • 外连接转AntiJoin的应用场景与限制条件 | OceanBase SQL 查询改写系列
  • 微服务——数据管理与一致性
  • [前端]mac安装nvm(node.js)多版本管理
  • sqoop,flume草稿
  • animatediff 模型网盘分享
  • 专业的内外网数据交换方案 可解决安全、效率、便捷3大问题