c++基础 【1】

一.变量的初始化

对于c++来说,变量的初始化可以有这几种
1.int a = 10;

2.int b(10);

3.int c{ 10 };

不过用{}初始化时会有更严格的要求
在这里插入图片描述
在这里插入图片描述

对于h来说,编译器只会报警告,而对于i来说,则会报出错误,不让它编译通过。
在这里插入图片描述
甚至数组和常指针也可以这样初始化。
4.int d = int (10);

在这里插入图片描述

5.int e = int{ 10 }
在这里插入图片描述
甚至可以这样
在这里插入图片描述
不过要注意的是,在变量已经定义好之后,不能这样赋值
在这里插入图片描述

二.引用

1.语法上

 引用,其实就是给变量起的别名,编译器并不会给它开辟空间。

在这里插入图片描述

2. 本质上

让我们来看看引用的本质,
在这里插入图片描述
通过看汇编我们可以发现引用,在底层实际也是个指针
这行代码相当于
int * const b =&a;

3.引用要注意的点

1.没有空引用

在这里插入图片描述

2.定义的引用必须初始化

在这里插入图片描述
没有初始化的话,它会直接报错。

3.没有引用的引用

在这里插入图片描述

4.引用一旦引用一个实体,就不能引用其他实体

让我们来看这段代码,在这里插入图片描述
假如说引用引用一个实体之后,可以引用其他实体的话,那么它是重新引用了b呐还是用20去修改a的值? 所以这样就出现了二义性。

4. 常引用

常引用引用常变量

在这里插入图片描述
当变量是常变量时,只有常引用才能引用

主观上,当你不想这个变量被修改时,也可以用常引用引用它

在这里插入图片描述

常引用是一个万能引用

在这里插入图片描述
它可以引用各种变量,甚至常量10,而对于 const int & f=10,它实际是开辟了一个临时量,把10赋值给这个临时量,然后f指向的是这个临时量的地址(上面我们不是说了吗,引用的本质就是一个指针)

5.引用的其他用法

1.指针的引用

在这里插入图片描述

2.数组的引用

在这里插入图片描述
那么现在思考一个问题,可以写一个存有5个引用的数组吗?
在这里插入图片描述
因为我们之前说过,引用就是给变量起的别名,并不实际开辟空间,而要用一个数组,存放5个引用,那不是就矛盾了吗。

6.不可以把局部变量以引用返回

虽然它没有报错,不过,它是一种极为危险的操作。
让我们接下来往下看
在这里插入图片描述
temp的地址为0x007efb30
在这里插入图片描述
此时它是我标红的这一块空间,

在这里插入图片描述
当我们接下来继续向下执行,我们会发现,它把这块非法空间有给修改了(此时fun的栈帧已经被释放,这块空间已经还给系统了),这是非常危险的行为,会和野指针带来同样的危险(本质都是和野指针一样的,都操作了不属于它的空间)

三.内联函数

1.使用内联函数的原因

当函数过于简单,为函数现场保护和现场恢复消耗的资源大于直接执行这个函数时,我们就可以使用内联函数。

2.visual stdio中配置环境

在这里插入图片描述

在这里插入图片描述
但是当我们加了inlne之后,我们发现,还是会调用add这个函数。
在visual stdio上应进行这样的配置
1.在这里插入图片描述
2.
在这里插入图片描述
配置完之后就可以了。
在这里插入图片描述
此时我们发现,它不会再调用这个函数了

3.多文件时使用inlne要注意的问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当你想一下,内联函数本来就是没有函数体的,当编译器编译时,先在A.h中找,发现它是内联函数,你把函数的定义写在A.cpp中也没有用,所以我们应该把申明和定义都写在.h文件中
在这里插入图片描述
在这里插入图片描述

4.内联函数与宏的区别

在这里插入图片描述
1.宏是在预处理时展开
2.内联函数是在编译时展开

四.缺省函数

为了更方便的使用函数,我们可以在定义函数时为形参指定缺省值(默认值)
使用实例如下
在这里插入图片描述

1.缺省值只能从右向左依次给

在这里插入图片描述
这样的话就会报错
在这里插入图片描述

2.传参数的时候只能从左往右依次传

在这里插入图片描述
不能像这样想着把1传给a,让b使用默认值,把3传给c,把4传给4

3.当使用缺省函数时,尽量把默认值写在函数的申明中

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

在这里插入图片描述
在这里插入图片描述
当编译的时候,编译器会直接找fun的声名,而在.h文件中,声名中并没有给参数默认值,所以它会报错。

而当定义和声名在同一个.cpp文件中的话就可以,不过我还是建议把缺省参数写在申明中
在这里插入图片描述
尽管这样也可以
在这里插入图片描述

4.缺省的参数不一定是常量,也可以是表达式

在这里插入图片描述
那是getNum这个函数先执行还是getPInt这个函数先执行?
让我们依次执行代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们可以发现,它是先从右往左执行的。

5.不可以把左边参数的默认值赋值给右边的参数

在这里插入图片描述
这样会报错

😐 后续我还会更新c++的内容,未完待续-----

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值