C++基础知识--引用浅识--inline内联函数

引用不是新定义一个变量,而是给已经存在的变量取别名.

引用的特性:

1.必须初始化

2.一个变量可以多次引用(多个别名).

3.引用与原变量共享内存.(不能改变指向)

#include<iostream>
using namespace std;
int main()
{
	int a = 0;(必须初始化)
	int& b = a;//引用,给一个变量取别名,包括指针也可以取别名
	int& c = a;

	int& d = b;//也可以给别名起别名
	++d;
	//是相同的地址
	cout << &a  << endl;
	cout << &b  << endl;
	cout << &c  << endl;
	cout << &d  << endl;

	return 0;
}

应用:在函数传参时,就可以用别名,可以不用指针了.

#include<iostream>
void swap(int& ra, int& rb)//就不用传地址了,没有空引用的概念了,风险更小
{
	int temp = ra;//a和b的别名ra,rb.
	ra = rb;
	rb = temp;
}

int main()
{
	int a = 0;
	int b = 10;
	std::cout << a << std::endl;
	std::cout << b << std::endl;
	swap(a, b);
	std::cout << a << std::endl;
	std::cout << b << std::endl;
	return 0;
}

const引用:

引用的时候:权限只能缩小不可以放大.

//const引用
int main()
{
    //引用的时候:权限只能缩小不可以放大
    const int a = 10;//只能读和写
    //int& b =a ;//权限放大error

    const int& b = a;

    int b = 20;//可读可写,还是可以引用的
    const int& a = b;//权限缩小,只读和写
    return 0;
}

指针和引用的关系:


1.语法概念上,引用是取别名不开空间,指针是储存一个变量地址,要开空间.
2.引用在定义时必须初始化,指针建议初始化,但是在语法上不是必须的
3.引用在初始化时引用一个对象后,就不能再引用其他对象;而指针可以不断的改变指向的对象.
4.引用可以直接访问指向对象,指针需要解引用才是访问指向对象.
5.sizeof的含义不同,引用与引用类型有关,但是指针就是4/8
6.指针很容易出现野指针,空指针的问题,引用很少出现,引用相对安全一些.

inline定义的内联函数:

与普通函数的区别:

1.调用方式不同
普通函数:调用时会产生函数调用开销(如保存寄存器、栈操作等),程序执行流程会跳转到函数体位置,执行完后再返回。
内联函数:编译器会将函数体直接插入到函数调用处,避免了函数调用的开销,相当于 "原地展开" 代码。
2.适用场景不同
普通函数:适合功能复杂、代码量大的逻辑,
或者需要被多次调用但每次调用成本较低的场景。
内联函数:适合简单、短小的函数
频繁调用时能显著提升性能,但代码量大会导致编译后可执行文件变大(代码膨胀)。

#include<iostream>
using namespace std;
inline int Add(int x, int y)//短小,简单
{
	int ret = x + y;
	return ret;
}

int main()
{
	int ret = Add(1, 2);
	cout << ret << endl;
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值