1.switch多分支结构 基本结构如下图: break语句直接跳出循环 当switch后面的变量表达式与其中的case值一样的话就依次执行后面的程序,直到遇见break跳出循环 switch语句必须遵循一下规则: 1)只能针对基本数据类型中的整型类型使用switch,这些类型包括int char等对于其他类型,则必须使用if语句; 2)case的标签必须是常量表达式,不能包含任何变量 3)不允许两个case的常量表达式相同 4)default不是必须的,当没有default时,如果case都匹配失败。那switch语句就什么都不执行,直接执行后续的代码 2.函数初步:自定义函数和库函数 (1)函数按其是否是系统预定义的分为两类:一类是编译系统预定义,成为库函数或标准函数,用户只需要使用头文件来进行引用 另一类是用户自定义函数,用户可以根据需要将某个具有相对哦独立能力的程序定义为函数 自定义函数有 函数返回类型+函数名+形参列表+函数体构成; 注意:c语言中不允许函数的嵌套定义,即在一个函数中定义另一个函数 (2)在函数中有两种参数一种是形式参数:再调用函数时接收传进来的数据,在调用完这个函数后会释放其存储空间,只作用于函数中 另一种是实际参数:可以是常量,变量表达式,再调用函数时都用明确的值传给形参 形式参数 和实际参数的区别和联系 1)形参只在函数调用时才会分配内存,调用结束后会立刻释放内存,只在函数内部有效,不能在函数外部使用 2)形参和实参在数量,类型,顺序上必须严格要求一致 3)函数调用中发生的数据传递是单向的,只能把实参的值传递给形参,而不能把形参的值返乡的传递给实参 3.函数调用的机制: 局部变量占用的空间是在程序执行的过程中动态的建立和释放,这种动态是通过栈由系统自动管理进行的,当任何一个函数调用时系统都要做一下保护工作: 1)建立栈空间; 2)保护现场:主调函数运作状态和返回地址入栈 3)为被调函数中的局部变量分配空间,完成参数的传递 4)执行被调函数函数体 5)释放被调函数中局部变量的栈空间 6)恢复现场:去主调函数运作状态即返回地址,释放占空间 7)继续主调函数的后续语句 4.在for循环语句中3个表达式都可以进行省略 5.逗号运算符作为在c语言中运算级别最低,逗号运算符从左往右 逗号运算符是指在c语言中,多个表达式可以用逗号分开,其中用逗号表达式分开的表达式的值分表计算,但表达式的值是最后一个表达式的值 6.空语句 语句可以为空,也就是除了末尾的分号以外什么符号也没有 空语句带来的问题: 不小心在if,while,或for语句的括号后方置分号会创建空语句,从而造成if,while,for 语句提前结束,if语句中,在括号后放置分号,无论条件表达式的值是什么,if语句执行的动作都一样 while语句中在圆括号后放置分号,会产生无限循环 for语句中,在圆括号后方知分号,会导致只执行一次循环体语句 7.跳转语句break,continue ,goto,return 1)break :语句只能在switch语句和循环语句中用来跳出switch和循环,区执行之后的语句 自己编程100以内的素数: continue:语句只能用在循环语句中,用来终止本次循环。当执行到contiune语句时将跳过尚未执行的循环体语句,开始下一次循环,下一次循环是否执行仍取决于循环条件的判断。 continue和break的区别:前者结束的是本次循环,而后者结束整个循环 goto语句与标识符语句一起使用,它控制程序从goto语句所在地方转移到标号语句处,goto语句会导致程序结构混乱,一般不提倡使用,但在某种特定的情况下如,多层循环嵌套中,使用goto比较方便,不会使用太多的break,从而时程序简洁,明了。 设置标号时只需在一个字符串后加冒号即可:标号由字母,数字,下划线组成,一般以字母下划线开头 return语句:用于结束函数的执行,返回调用者,如果是主函数即返回操作系统(终止程序的执行) return语句与exit函数的区别:exit函数是属于<stdlib.h>头文件中, 两者都是说明程序的终止但有差别:exit表示程序的终止无论在主函数还是自定义函数,而return语句仅在主函数表示程序的终止