第一章:C语言关键字 - 图文

发布时间 : 星期三 文章第一章:C语言关键字 - 图文更新完毕开始阅读

C 语言中循环语句有三种:while 循环、do-while 循环、for 循环。

while 循环:先判断while 后面括号里的值,如果为真则执行其后面的代码;否则不执行。while(1)表示死循环。死循环有没有用呢?

看下面例子:比如你开发一个系统要日夜不停的运行,但是只有操作员输入某个特定的字符?#?才可以停下来。 while(1) {

if(?#?== GetInputChar()) { break; } }

一、break 与continue 的区别

break 关键字很重要,表示终止本层循环。现在这个例子只有一层循环,当代码执行到break 时,循环便终止。

如果把break 换成continue 会是什么样子呢?continue 表示终止本次(本轮)循环。当代码执行到continue 时,本轮循环终止,进入下一轮循环。

while(1)也有写成while(true) 或者while(1==1) 或者while((bool) 1)等形式的,效果一样。

do-while 循环:先执行do 后面的代码,然后再判断while 后面括号里的值,如果为真,循环开始;否则,循环不开始。其用法与while 循环没有区别,但相对较少用。

for 循环:for 循环可以很容易的控制循环次数,多用于事先知道循环次数的情况下。

留一个问题:在switch case 语句中能否使用continue 关键字?为什么?

二、循环语句的注意点

1、在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU 跨切循环层的次数。例如:

2、建议for 语句的循环控制变量的取值采用“半开半闭区间”写法。

半开半闭区间写法和闭区间写法虽然功能是相同,但相比之下,半开半闭区间写法写法更加直观。

3、不能在for 循环体内修改循环变量,防止循环失控。

4、循环要尽可能的短,要使代码清晰,一目了然。

如果你写的一个循环的代码超过一显示屏,那会让读代码的人发狂的。解决的办法由两个:第一,重新设计这个循环,确认是否这些操作都必须放在这个循环里;第二,将这些代码改写成一个子函数,循环中只调用这个子函数即可。一般来说循环内的代码不要超过20行。

5、把循环嵌套控制在3 层以内。

国外有研究数据表明,当循环嵌套超过3 层,程序员对循环的理解能力会极大的降低。如果你的循环嵌套超过3 层,建议你重新设计循环或是将循环内的代码改写成一个字函数。

11. C语言goto关键字—尽量少用

一般来说,编码的水平与goto 语句使用的次数成反比。有的人主张慎用但不禁用goto语句,但我主张禁用。关于goto 语句的更多讨论可以参看Steve McConnell 的名著《CodeComplete. Second Edition》。

禁用goto 语句。自从提倡结构化设计以来,goto 就成了有争议的语句。首先,由于goto 语句可以灵活跳转,如果不加限制,它的确会破坏结构化设计风格;其次,goto 语句经常

带来错误或隐患。它可能跳过了变量的初始化、重要的计算等语句,例如: struct student *p = NULL; … goto state;

p = (struct student *)malloc(…); //被goto 跳过,没有初始化 … state:

//使用p 指向的内存里的值的代码 …

如果编译器不能发觉此类错误,每用一次goto 语句都可能留下隐患。

12. C语言void关键字

void 有什么好讲的呢?如果你认为没有,那就没有;但如果你认为有,那就真的有。有点像“色即是空,空即是色”。

一、void a?

void 的字面意思是“空类型”,void *则为“空类型指针”,void *可以指向任何类型的数据。

void 几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void 变量,看看下面的例子: void a;

Visual C++6.0 上,这行语句编译时会出错,提示“illegal use of type 'void'”。不过,即使void a 的编译不会出错,它也没有任何实际意义。 void 真正发挥的作用在于: 1. 2.

众所周知,如果指针p1 和p2 的类型相同,那么我们可以直接在p1 和p2 间互相赋值;如果p1 和p2 指向不同的数据类型,则必须使用强制类型转换运算符把赋值运算符右边的指针类型转换为左边指针的类型。例如: float *p1;

对函数返回的限定; 对函数参数的限定。

联系合同范文客服:xxxxx#qq.com(#替换为@)