本章笔记将接着C语言学习笔记(上)-CSDN博客的进度向下制作笔记,如出现错误,还望广大朋友们批评指正。
C语言学习笔记(上)-CSDN博客文末中,介绍了if..else语句和switch...case语句的代码编写格式,本小节将总结两个代码的用法。
if...else语句中,if、else if后面接的表达式,表示程序走到这里需要判断,条件是否满足。
当是下面的这类型时,表达式判断为真时程序执行代码1,否则将执行代码2
if(表达式){
代码1;
}else{
代码2;
}
当是下面这种形式,先判断表达式1是否为真,为真后执行代码1,为假则判断表达式2时候为真,当表达式2为真时,执行代码2,否则执行其它代码
if(表达式1){
代码1;
}else if(表达式2){
代码2;
}else{
其它代码;
}
当出现下面的嵌套形式时,程序先判断表达式1的真假。
当表达式1为真时,程序执行表达式1所对应的代码块,即下一步判断表达式2是否为真,当表达式2为真时执行代码1否则指向其它代码2。
当表达式1为假时,程序执行else if语句,判断表达式3是否为真 ,当表达式3为真,执行表达式3的代码块,进一步判断表达式4是否为真,当表达式4为真,执行代码3,否则执行代码4
当表达式3也为假,则执行其它代码3
if(表达式1){
if(表达式2){
代码1}else{
其他代码2}
}else if(表达式3){
if(表达式4){
代码3}else{
代码4}
}else{
其他代码3
}
switch...case语句,当出现这个分支判断语句是,先判断表达式中的结果,与case中对应的常量表达式哪一个对应,则执行相应的代码块,否则执行默认语句default。
执行完相应的代码块,采用break跳出分支控制语句。
switch(表达式){
case 常量表达式1:代码块1;
break;
case 常量表达式2:
代码块2;
break;
case 常量表达式n:
代码块n;
break;
default:
其他分支;
break;
}
格式:goto + 标签名(注意标签名也要符合标识符的命名规范)
代码执行到goto时,直接执行NEXT执行代码2,将代码1跳过,使用goto实现循环,则将定义的标签名放到goto之前。
goto NEXT;
代码1;
NEXT:
代码2;
while循环,先执行表达式,如果表达式为真,则执行代码块,然后在执行表达式,如果还是真的,则执行代码块,知道表达式的判断为假,循环结束。
while(表达式){
代码块;
}
do...while循环,先执行代码块,然后执行表达式,如果表达式为真,则继续执行代码块,然后再执行表达式,如果还为真,则继续执行代码块,直到表达式为假,循环立即结束。
do{
代码块;
}while(表达式);
do...while 和 while的区别是while先判断后执行,do...while先执行一次后判断
先执行表达式1,在对表达式2进行判断,如果表达式2为真,则执行代码块,然后在执行一次表达式3,在返回判断表达式2是否为真,为真则继续执行代码块和表达式3,直到表达式2为假的时候,跳出循环立即结束。
for(表达式1;表达式2;表达式3){
代码块;
}
就是条件始终为真,循环体一支在执行程序。例如:
while(1){
循环体;
}
用于执行完成每一个分支后,跳出语句,立即结束。
用于循环中,表示立即结束本层循环
该关键字只能用于循环中,作用是结束本层的本次循环
在函数中表示返回函数执行结果,用于整个程序中,表示立即结束程序
数组的作用是用来保存一组相同数据类型的数据的,数组中的每个数据叫做元素,从内存上考虑使用数组需要分配一块连续的空间来存储数据。
一维数组就是下标只有一个的数组
格式:存储类型 数据类型 数组名[下标];
存储类型:一般不写都默认auto(自动存储类型),除此之外还有,register(寄存器存储类型)、const(常量存储类型)、static(静态存储类型)、extern(外部存储类型)、volatile(易变存储类型)
数据类型:指数组中每个元素的数据类型
数组名:采用标识符的命名的规范
下标:用来表示数组的元素的个数
注意:下标是从0开始的
二维数组就是下标有两个的数组
格式:存储类型 数据类型 数组名[行数][列数]
存储类型、数据类型、数组名和一维数组的相同,从存储的角度来看所有的元素都是连续的,存储方式如同下图所示。
一维数组的初始化:int s[5],数组里存储的数据是随机值
int s[5] = {10,20,30,40,50}此时数组被完全初始化
int s[5] = {0}数组全部初始化为0
int s[] = {1,2,3},当省略[]中的下标,编译器自动计算数组的长度
二维数组的初始化:int s[3][4] ,数组里存储的数据是随机值
int s[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}此时数组被完全初始化
int s[3][4] = {{1,2},{3,4},{5,6}},此时数组不完全初始化,没有初始化的位用0初始化
strlen:计算字符串的长度,不包含'\0'的,
strcpy:字符串的复制,采用该函数时需要注意目标字符串的长度要足够大
strcat:字符串的拼接,采用该函数时需要注意目标字符串的长度要足够大
strcmp:字符串的比较,采用该函数的时候将两个字符串的每一个字符对应的ASCII码,出现大小关系后,就会立即返回