为了账号安全,请及时绑定邮箱和手机立即绑定

【金秋打卡】第4天 2022重学C++3

标签:
C++

第一模块:

课程名称:百度大牛带你结合实践重学C++

章节:2-5~2-8

讲师姓名:quickzhao


第二模块:

课程内容:

2-5~2-8小结讲解了C++语言的标识符、关键字、变量和常量以及注释的写法


第三模块:

学习心得:

2-5 语言的标识符和关键字


理解:namespace【命名空间】

eg:

int m;

上面的这个代码声明了一个变量,这个变量的名字就是m;

也可以说这个变量的命名空间叫m,这个【见名知意】的m是给【人】看的,而不是给【计算机】看的,计算机看到的是这块内存的地址,比如【0x003FFDDC】这种16进制数,所以,【m】与【0x003FFDDC】是等价的,都指向同一块内存。


C++标识符规则:

spacer.gifhttps://img1.sycdn.imooc.com//635fe4770001ec0608460501.jpg


C++关键字(常用)(关键字会不断的更新):

spacer.gifhttps://img1.sycdn.imooc.com//635fe48500013e6511250531.jpg


标识符范式:

spacer.gifhttps://img1.sycdn.imooc.com//635fe49900015ca208760698.jpg


2-6 变量与常量

变量:

spacer.gifhttps://img1.sycdn.imooc.com//635fe4a200012eda08720324.jpg


逗号分隔,分号结束


定义变量:

spacer.gifhttps://img1.sycdn.imooc.com//635fe4ab0001c12a08420411.jpg


常量:

spacer.gifhttps://img1.sycdn.imooc.com//635fe4b3000134df08550342.jpg


定义常量:

spacer.gifhttps://img1.sycdn.imooc.com//635fe4bb0001ac3a08760345.jpg

推荐使用const定义常量,第一种方式是早期在C语言中被大量使用方式


整数常量:

spacer.gifhttps://img1.sycdn.imooc.com//635fe4c50001745408590315.jpg


整数常量举例:

spacer.gifhttps://img1.sycdn.imooc.com//635fe4cf0001a0c407730260.jpg

可以有前缀、后缀;

一般整数都是用10进制表达,特殊情况用16进制表达;


布尔常量:

spacer.gifhttps://img1.sycdn.imooc.com//635fe4d600018cd407800237.jpg


【短文本、长文本】、【窄字符、宽字符】


字符常量:

spacer.gifhttps://img1.sycdn.imooc.com//635fe4de00016c5a08470255.jpg


转意字符常量表:

spacer.gifhttps://img1.sycdn.imooc.com//635fe4e500013c8b07930431.jpg

\ 是一个转意字符


补充:

1.栈堆

spacer.gifhttps://img1.sycdn.imooc.com//635fe4ed0001a52c07620289.jpg

变量是在栈区还是在堆区,一个比较简易的判断标准是:

new 出来的都在堆,方法中非new的都在栈


内存分为【栈】与【堆】,C++中【栈】中的内存会随着【栈帧】的弹出而回收,但是,【堆】中的内存就不会被自动回收,【堆】中的内存只能程序员自己主动回收,即:new和delete必须成对出现。


2.变量在内存中的空间以字节为单位进行分配,CC是VS下对内存未初始化区域的信息默认存储内容


3.C++中的【宏】

C++中的【宏语法】一定要小心使用,不熟不要用,否则出错不好排错

eg:

spacer.gifhttps://img1.sycdn.imooc.com//635fe4f70001c01404410239.jpg

修正:

spacer.gifhttps://img1.sycdn.imooc.com//635fe4fc00011a4804160047.jpg


4.【指针】和【指针的引用】不是一回事!

引用是一种特殊的指针


5.两种编程模型:

  • 泛型编程

  • 面向对象编程

建议:【泛型编程】抽象度更高,一般不建议使用,一个工程中,使用一种【编程模型】就好了,【泛型编程】一般用在开源框架中,属于高阶编程的一种;


6.内存溢出分为两种:

  • 栈溢出

  • 堆溢出

不管是那种【溢出】,其实都是内存不够用了,一般栈的内存会比堆的内存要小,所以,如果有大量的空间处理,就不要在栈上来完成,可以在堆里new出空间来操作,避免栈内存overflow;

补充: Widnows默认给一个线程1M的栈空间只是一个经验值,不同版本的系统可能会不一样,VS2015可以手动修改栈保留空间大小;


7.临时对象


8.头文件与源文件

头文件放声明

  • const 常量定义

  • 内联函数定义(1.有inline修饰  2.在类定义的函数)

  • 类定义

源文件放定义


9.区别:

const 修饰内容时的规则:

  • 先看左侧,左侧最近的不可修改

  • 左侧没东西,则最近的右侧不可修改


char const * p:char不可变(也就是数据不变)

char * const p:*不可变(也就是指针不可变)

const char*:char不可变

const char * const p:char不可变,*不可变


10.指针和引用:

C++中能用【引用】就用【引用】,避免使用指针;

Java中的引用和C++中的指针,概念上比较接近,只是被移除了大部份特性,保留了简单的【指向】功能;


3篇博文:

https://blog.csdn.net/zhongyili_sohu/article/details/99293364

https://www.cnblogs.com/qiumingcheng/p/7819639.html

https://www.cnblogs.com/duwenxing/p/7421100.html


spacer.gifhttps://img1.sycdn.imooc.com//635fe5070001c2f604230162.jpg

eg:

int  a; // 声明一个变量

int & a; // 声明一个引用

int * a;  //声明一个指针

a、& a、* a:本质上都是命名空间,命名空间的本质就是【内存块的地址】


全局变量:

在代码执行的全过程中都存在的变量


基类:

就是父类


虚函数:就是java中的接口


副本会占用内存,用完后被销毁(弹出栈帧)


11.临时对象:

C++中所有临时对象都会被const修饰


12.C++中创建对象的两种方式:

  • 栈上创建(stack)

  • 堆上创建(heap)

博文:

https://www.cnblogs.com/qiumingcheng/p/7819639.html


13.内存分配的3种方式:

  • 静态存储区:程序编译时分配全局、静态变量)

  • 栈:弹出栈帧时自动回收,程序运行时分配,栈内存容量有限(函数的局部变量)

  • 堆:【malloc与free】、【new与delete】,程序运行时分配(其他所有数据)


2-7 注释

程序的注释是解释性语句,可以在C++代码汇中包含注释。这可以提高源代码的可读性。

所有的编程语言都允许某种形式的注释。


C++的注释支持:

  • 单行注释  // 

  • 多行注释  /**/

C++中的所有注释字符都会被C++编译器所忽略


注释的原则:

  • 好的命名和代码本身就是最好的注释(写语义话的代码)

  • 重要、复杂的代码段应该要标记上注释,且注释先行,通过注释组织伪代码

  • 注释写了就要写清楚,要确保注释和代码在语义上的一致性


2-8 课后练习

......


第四模块:

课程截图:

https://img1.sycdn.imooc.com//635fe37a0001f0e807580195.jpg

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消