大学c++期末总结(2)

2018-12-22 20:10

(2):当一个逻辑语句一定成立时,后续部分将不执行

true||(逻辑或)任何值都是true 所以i++部分不必要做,i仍然等于3。同理可以推广到&&(逻辑与)中。

(3)所有非0的数字(因为字符是以ASCII码存储的,所以也能看成数字)都将被映射成1。

13:条件运算符“?:”

(1) 它是唯一的一个三目运算符

(2) 它只完成符合条件的那一项分支,不符合条件的语句不会执行。

注意条件运算符于逗号表达式的混合使用。

14:关于switch语句

(1) 格式 switch(n) {

case 常量表达式1 :语句1; case 常量表达式2 :语句2; case 常量表达式3 :语句3; default : 语句4; }

(2)其中 n只能是int型 char型 bool型 和枚举型(目前不考虑),这个意思就是,n

不能为float型。(这里书上没有写清楚,试验了一下是这样的)

(3)default可以省略,default的触发条件是n与所有常量表达式无匹配。

(4)case语句执行以后,如果没有遇到break;就会继续往下执行并且可以从case语句执行到default语句。

15:关于循环语句:

(1)无论是while do-while for语句,如果不加花括号,那么他们只能影响到他们下一句话。

(2)for(表达式1;表达式2;表达式3)语句中的三个表达式均可以省略,其中第二个表达式省略的默认值是1 而不是0。即for(;;)=while(true)。 (3)注意continue 和break的区别,continue是强制终止本次循环并进行下一次,而break是强制跳出当前循环体,当有多个循环嵌套语句时跳出的循环体为包含break的最小的循环体。

16:关于函数

(1):一个函数可以有多个return 语句(如果返回类型不是void的话),并且只要有一个return 语句执行,那么整个函数就执行完毕剩余部分将不再执行。

(2)函数不能嵌套定义,即一个函数内部不能有完整的定义另外一个函数的语句块。 (3)函数可以自我调用,详情参照递归。

(4)函数的参数只要不是引用或者是指针(即传址参数),那么实参的值就不会改变。 (5)函数在执行之前必须被定义或者申明。函数在申明时,可以不写参数,只写参数类型,并且在给默认值时,可以以这种形式

。我们推荐函数默认值在

申明中设置。

(6)函数的默认值只能设置一次,如果在申明和定义中都设置了默认值(不管相不相同),在编译的时候都会报错。并且默认值的设置必须从右向左,中间不能间断。

(7)避免函数的重复定义,或者是意义不清的重载

引起歧义的重载函数

(8)当函数的参数列表是表达式时,按照自右向左的顺序执行(最起码在VC++和GCC编译器是这样的)

这时,函数的参数列表是f(4,3)。

(9)函数重载:

函数重载的要求是对于一个同名的函数,参数列表(个数,类型,顺序)至少有一项不同。否则就会出现编译系统无法判断到底是重载哪个函数。如图:

特别注意:对函数的申明和定义不是同一回事,申明就是告诉编译系统有这么长一个样子的函数,它的返回类型,参数列表是怎么样的。系统在检查声明时,并不会去检查函数的具体实现。而定义则是要写出函数要实现的目标的语句。

17:关于变量的生命周期和作用域

(1) 局部变量与全局变量的概念

定义在函数外部的变量,如图中的c,即使全局变量,而在函数内部定义的变量如a既是局部变量。局部变量未初始化为随机值,而全局变量未初始化为0或’\\0’。并且全局变量无论放在main函数的上下方,都在程序一开始执行时就被定义。但是却无法在其生存期之外的地方使用。下面介绍 (2) 关于重复定义和屏蔽效应

被重复定义的变量一定是处于同一语句块中

与上图相比,int a=1上下少了花括号,这样就会报给语法错误重复定义。

而屏蔽效应则是发生在不同语句块之间 如之前的那张图。在最内部的语句块a=1,此处的a把上面的a=0的a给屏蔽了,并且这两个a不是同一个。

(3)动态存储的(auto)变量与静态存储的(static)变量以及它们的生命期 自动变量由关键字(auto)决定,在未写关键字时,默认为自动变量。 静态局部变量由关键字(static)决定。

自动变量存储在栈空间中,随着栈空间的建立和销毁而建立销毁。

静态局部变量只在最开始定义一次,存储在全局变量区中,并且从定义开始一直生存到程序结束。

(4)不是特别重要的register(寄存器)变量和extern(外部)变量

寄存器变量就是讲变量存储在寄存器(cache)中,以便在多次使用时,能更快的完成。

要注意的是,register关键字不是强制性指令,而是建议性指令,计算机可以不遵守。并且,当计算机认为这个变量需要被使用多次时,会自动的将其作为寄存器变量来使用。 当全局变量被定义在main函数下方时,由于生命期的限制,全局函数不能在main函数中使用,这时,我们需要在main函数中加上extern关键字来申明外部变量。

也就是说,如果改成了extern float c; 那么编译器就会报错

静态外部变量,与普通外部变量基本相同,只不过这个变量不能被别的文件所使用。

特别的:说一下运算符”::”,表示该变量为全局变量而不是由可见性导致的局部变量。

18:预处理命令(不是重点)

由于预处理命令都是在程序开始运行之前执行的步骤,所以要在开头加上#并且尾部没有; (1) 宏命令

#define 标识符(宏名) 字符串 #define 宏名+(参数列表) 字符串

即在程序运行之前,将所有的标识符用字符串替代。由于const 关键字的存在,这个命令的实用性不是很大。

如#define PI 3.1415926 在下文出现的PI均以3.1415926代替。 如#define s(r)3.14*r*r

则在下面运行area=s(r) 时,相当于运行area=3.14*r*r。

要注意的是,并不是开辟一块空间并命名为宏名,然后对其进行赋值。而是用右边的字


大学c++期末总结(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:对海洋的重要性及南海和钓鱼岛问题的思考

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: