new 分配空间;引用

一、new

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

cpp 复制代码
// 开辟一个 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、基本使用: 类型 &别名=原名 ,对应同一地址

cpp 复制代码
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 ; ×

三、引用做函数参数:

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

cpp 复制代码
// 指针接收
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;
}

得出的结果一样

四、引用做函数的返回值

cpp 复制代码
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;
}

五、引用的本质:

本质是 : 指针常量

cpp 复制代码
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; 所以引用初始化后不能改变指的地方,但是可以改变值

🚗🚗 🚗 🚗 🚗 🚗 🚗 🚗

相关推荐
重生之我在20年代敲代码5 分钟前
【C++入门】详解(中)
开发语言·c++·笔记
羑悻的小杀马特26 分钟前
【Artificial Intelligence篇】AI 入侵家庭:解锁智能生活的魔法密码,开启居家梦幻新体验
c++·人工智能·生活
钢铁小狗侠29 分钟前
设计模式(5)——观察者模式
c++·观察者模式·设计模式
花里胡哨的菜只因33 分钟前
关于在windows系统中编译ffmpeg并导入到自己项目中这件事
c++·windows·ffmpeg
我想学LINUX1 小时前
【2024年华为OD机试】 (A卷,100分)- 对称美学(Java & JS & Python&C/C++)
java·c语言·javascript·c++·python·华为od
每天敲200行代码1 小时前
Linux开发工具--vim编辑器-gcc/g++编译器-gdb调试器
linux·c++·编辑器·vim·gdb
闻缺陷则喜何志丹1 小时前
【C++图论 BFS】1129. 颜色交替的最短路径|1779
c++·力扣·图论·最短路·宽度优先·颜色·交替
羊小猪~~1 小时前
数据结构C语言描述11(图文结合)--二叉搜索树(BST树)的实现(数据采用KV存储形式进行封装)
c语言·开发语言·数据结构·c++·学习·考研·算法
阿杰学编程2 小时前
3、Go中的注释
c++·算法·golang
Catherinemin2 小时前
剑指Offer|LCR 027.回文链表
数据结构·链表