萌新学习C++容易漏掉的知识点,看看你中招了没有(一)
2020博客之星年度总评选进行中:请为74号的狗子投上宝贵的一票! 文章目录
一. 前言???????很多人,包括我,看书,看完一章怎么怎么的,然后不管是作业,还是考试出现这一章的内容,总有些地方跟我们脑袋里面理解的不一样,自己明明学习过,但机器给出的答案和自己的完全相反,或者完全不正确,这就是为什么书读百遍,其义自见,可能夸张了,不知道你们是怎样的,一本书多读,确实能带给我不同的知识,这也是我为什么想起来写总结,我加了一个群,看到萌新们问的问题大多是他们看书漏掉的知识,这些人一定是只看了一遍或者没看,他们的程序刚好需要那么一点小小的知识去解决,可是他们不知道这一点小小的知识。 二.进入正题1. float和double萌新初学浮点数要注意:
2. for循环萌新只用这一种:
萌新忽略的用法:
3. 逗号运算符萌新知道的: 萌新不知道的:
C++是这样规定的:
4. 数组数组初始化和赋值
5. 申请动态数组申请动态数组,也可以将其初始化为一个值
6. 分不清数组和指针在很多情况下,可以以相同的方式使用指针名和数组名,对于它们,可以使用数组方括号表示法,也可以使用解除引用运算符(*)在多数表达式中,它们都表示地址。 数组和指针区别一:可以修改指针的值,而数组名是常量,无法修改。 数组和指针区别二:对数组应用sizeof()运算符得到的是数组的长度,而对指针应用sizeof()运算符得到是指针的长度,即使指针指向的是一个数组。 7. 数组的地址
从数字上说,这两个地址相同,但从概念上说,&tell[0] (既tell)是一个2字节内存块的地址,而&tell是一个20字节的内存块的地址,因此,表达式tell+1将地址值加2,而表达式&tell+2将地址加20,换句话说,tell是一个short指针(short * ),而&tell是一个这样的指针,既指向包含20个元素的short数组( short(*)[20] )。 &tell如何等于( short(*)[20] ),如下: 详见C++ primer plus 109页 8. 优先级和结合性很多萌新可能不太注意优先级和结合性的顺序,这里告诉大家,先考虑优先级,在优先级同级的情况下再考虑结合性。 9. 利用循环创造暂停假象萌新可能会使用如下for循环来创造程序暂停:
更高级的用法是:
10. 不注意类型转换很多萌新代码逻辑正确,可是就是得不到正确答案,多半出在类型转换上面,下面给大家一条法则: 1.如果有一位操作数的类型是long double,则另一个操作数转换为long double。 2.否则,如果有一个操作数的类型是double,则另一个操作数转换为double。 3.否则,如果有一个操作数的类型float,则另一个操作数转换为float。 4.否则,说明操作数都是整形的,因此执行整形提升,什么是整形提升,下面有写。 5.在整形提升的情况下,如果两个操作数都是有符号或者无符号类型的,且其中一个操作数的级别比另一个低,则转换为最高级别的类型。 6.如果一个操作数为有符号的,另一个操作数是无符号的,且无符号操作数的级别比有符号操作数的级别高,则将有符号操作数转换为无符号操作数所属的类型。 7.否则,如果有符号类型可以表示无符号类型的所有可能取值,则将无符号操作数转换为有符号操作数所属的类型。 8.否则,将两个操作数都转换为有符号类型的无符号版本。
11. 数组大小确定
萌新常常写出这样的程序:
目前就想到这些,我们下期见~(编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |