c++基础知识new和 引用的学习

本文详细介绍了C++中的动态内存管理关键字`new`,包括如何创建和释放整型变量及数组,并强调了释放内存的重要性。同时,文章探讨了引用的概念,作为变量的别名,强调了引用必须初始化且不可改变的特性。引用在函数参数传递中的作用以及作为返回值类型的注意事项也进行了讲解。此外,还提到了常量引用的应用场景,以防止意外修改实参值。
摘要由CSDN通过智能技术生成

1.new的学习

//new的学习

#include<iostream>
using namespace std;
int main()
{
	int* p = new int(20);   //利用new创建一个整型  ,返回的是地址
	int* array = new int[10];  //利用new创建一个数组,返回的是首个元素的地址
	cout << *p << endl;
	delete p;  //释放
	for (int i = 0; i < 10; i++)
	{
		array[i] = i;   //遍历创建的数组并赋值
	}
	delete[] array;  //释放创建的数组,[]记得加
	return 0;
}

2.引用的学习

//  引用的学习
// 给变量取别名

//数据类型 &别名 = 原名

#include<iostream>
using namespace std;
int main()
{
	int* p = new int(20);
	int*& c = p;   //c和p访问的地址是一样的
	cout << *c << endl;   
	cout << *p << endl;

	int a = 20;
	int& b = a;
	int d = 30;
	int& b = d;   //编译不通过,b显示重定义,多次初始化
	return 0;
	}

在这里插入图片描述
引用注意事项
1.引用必须初始化
int &b ; 这样的语法是错误的,我们一开始就要告诉计算机b是谁的别名。
2.引用一旦初始化,就不可修改,即b是a的别名之后,不能再将b设置成c的别名。

引用来实现传递
可以做到形参修饰实参

#include<iostream>
using namespace std;
void swap(int& a, int& b);
int main()
{
	int a = 20, b = 200;
	swap(a, b);
	cout << a << "   " << b << endl;

	return 0;
}
void swap(int& a, int& b)
{
	int temp;
	temp = a;
	a = b;
	b = temp;
}

在这里插入图片描述
引用作为函数返回值类型

#include<iostream>
using namespace std;
int& test();
int main()
{
	int& ref = test();
	cout << "ref = "<<ref << endl;
	cout << "ref = " << ref << endl;  //所以说不要返回局部变量的引用,因为局部变量的数据用完一次之后就会被释放
	return 0;
}
int& test()
{
	int a = 10;
	return a;
}

在这里插入图片描述
修改方式是将 局部变量改为静态变量,存放在全局区,全局区的数据是在程序结束完之后再释放。
在这里插入图片描述
引用的本质

引用的本质在c++的内部实现是一个指针常量

int a = 10;

int& ref = a;   // 实质是   int *const ref =&a; 
                //指针常量是指针指向不可更改,也就说明了引用不可更改
ref =20;  //内部发现是引用,自动帮我们转换为 : *ref=20;

常量引用

首先要知道

int a = 10;
int& ref = 10;   //这是不合法的,引用必须引用一块合法的空间

const int& ref = 10;//  编译器将代码改为  int temp=10; int &ref =temp;这就是const的作用
                    // 这样就做到了常量引用

主要使用场景是防止误操作修改实参的值

void showValue(const int& v)
{
	//v = v + 10;   这样的代码一写出来就会报错,因为会修改实参的值,从而避免误操作。
	cout << v << endl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值