【C++学习】2、引用和内联函数

1、什么是引用?

变量名本质:一段连续空间的别名

引用的本质:给已经存在的变量取别名

int num = 100;
//定义的时候  &修饰变量名 表示引用 
//系统不会给b 开辟空间  因为b是num的别名 b和num共用同一个空间
//b必须初始化
//int &b;//err
int &b=num;//b为num的别名, b为num的引用

给数组取别名:

int arr[5]={10,20,30,40,50};

//myArray是arr的别名
int (&myArray)[5] = arr;

给指针取别名:

int *p;
int *(&myP) = p;

给函数取别名:

int func(int,int);
int (&myFun)(int,int) = func;

1、引用作为函数的形参,函数内部可通过形参引用修改外部变量的值

2、常引用不能通过形参引用修改外部变量的值。

//需求:给100取个别名
const int &a = 100;
//a就是常引用  不能通过a修改内容
//a = 1000;//err
cout<<"a = "<<a<<endl;

3、指针和引用的区别

1、 指针是一个变量,它存储了一个内存地址;引用是一个别名,是已存在的变量的别名

2、 指针可以通过*来访问和修改指向的内存地址中的值,引用本身不能直接操作内存地址

3、 指针可以为空,引用不能赋予空值

4、 指针可以在声明时不进行初始化,引用必须进行初始化

2、什么是内联函数?

用关键字inline修饰的函数

//内联函数的定义:inline必须在定义函数的时候修饰
inline int myAdd(int x, int y)
{
    return x+y;
}
//函数声明时  使用inline无效
inline int myAdd(int x, int y);//无效的

内联函数和宏函数的区别:

1、内联函数的本质是函数,宏函数的本质不是函数

2、宏函数在预处理阶段展开,内联函数在编译阶段展开

3、宏函数不能保证参数的完整性,内联函数能保证参数的完整性

4、宏函数没有作用域的限制,不能作为类的成员,内联函数有作用域,可以作为类的成员

内联函数的特点:

1、inline修饰的内联函数只是用户的建议,具体还得看编译器

2、类的成员默认为内联函数

3、内联函数的限制:

        不能存在任何形式的循环语句

        不能有过多的条件判断语句

        函数体不能过于庞大

        不能对函数进行取址操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值