C++对C的加强(2)——引用和动态内存分配

C++对C的加强——引用

1、什么是引用?
绑定一个变量,不能再绑定其他的变量;其次定义一个引用一定要给它初始化(绑定一个变量)
2、引用的作用:
给变量起别名,操作这个引用实际上就是操作这个变量。

1)引用作函数形参==指针作函数形参

#include<iostream>
using namespace std;

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

int main()
{
    int a=7;
    int b=8;
    swap(a,b);
    cout<<a<<":"<<b<<endl;
    return 0;
 }


2)引用作函数的返回值:使函数的调用可以作为左值
不能返回局部变量或者局部变量的地址(因为函数执行结束之后,会释放空间)
在这里插入图片描述
在这里插入图片描述

3、引用的分类:
左值引用(只能绑定左值)右值引用(只能绑定右值)

—— 如何判断一个左值?
是否可以对该值取地址,或者可以修改
——如何判断一个右值?
不能对该值取地址或者修改该值

——左值引用的作用:作函数形参、函数返回值
——右值引用的作用:作函数形参、函数返回值

——左值引用解决的问题:代替指针的操作
——右值引用解决的问题:临时对象开销的问题(对象移动)

int num=5;
int &l_num=num;//绑定左值
int &&r_num=5;//绑定右值
int &&r_num2=std::move(l_num);//move:将左值l_num转为右值

int &&r_num=5;
r_num++;
//r_num虽说是一个右值引用的名字,但是r_num仍然是一个左值

4、引用的注意事项:
“引用不占用内存空间”——错误的说法

struct node
{
    int num;
    int &l_num=num;
 };

在这里插入图片描述
在这里插入图片描述

5、指针和引用的区别:
本质、内存空间、级数(指针可分为多级、引用可分为两级)、使用效率(引用效率高,直接访问,而指针间接访问)

6、const 关键字升级:
——const:修饰一个变量(全局、局部)、修饰函数返回值
——作用:将修饰的变量标记为只读变量 (错误:const 修饰的变量是常量)
——注意事项:const修饰一个变量必须初始化;const距离谁近就修饰谁,谁就不能改变
——工程应用:修饰函数的形参,保护实参不在函数执行过程中被修改,也就是说这个函数接口是安全的,可以使用。
在这里插入图片描述
在C++中:
——const修饰一个变量,这个变量就是常量,不可以修改
——指针和引用赋值操作必须是const对const;
在这里插入图片描述
——constexpr关键字:
在这里插入图片描述

C++对C的加强——动态内存分配(new、delete)

1、C语言动态分配问题(malloc用法)
在这里插入图片描述
2、C++中 new、delete分配
在这里插入图片描述
在这里插入图片描述
3、C语言中的typedef用法
在这里插入图片描述
4、C++中的using 用法
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值