目录
1. break语句 的实际效果是把语句列表划分为不同的分支部分
一、static的作用
(一)static修饰局部变量
一个普通的局部变量是放在栈区的,而被static的修饰的局部变量,是放在内存的静态区的
存储位置发生了变化,使得局部变量出了作用域不会销毁,影响了变量的生命周期,但是作用域不受影响
- 没有static
- 有static
(二) static修饰全局变量
- 一个全局变量在整个工程中都可以使用的!
- 全局变量是具有外部链接属性的,在其他源文件内部只要适当地声明就可以使用
- static修饰全局变量这时全局变量的外部链接属性就变成了内部链接属性,只能在自己所在的.c文件内部使用,其他.c文件无法使用影响了,影响了变量的作用域
(三) static 修饰函数
- 函数是具有外部链接属性的
- static 修饰函数 后,函数的外部链接属性就变成了内部链接属性被static修饰的函数只能在自己所在的.c文件内使用,其他.c文件无法使用,最终相当于影响了作用域
没有static
二、#define 定义常量和宏
三、switch语句
switch(整型表达式)
{
语句项;
}
(一)在switch语句中的 break
1. break语句 的实际效果是把语句列表划分为不同的分支部分
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int day = 5;
switch (day)
{
case 1:
printf("星期1\n");
case 2:
printf("星期2\n");
case 3:
printf("星期3\n");
case 4:
printf("星期4\n");
case 5:
printf("星期5\n");
case 6:
printf("星期6\n");
case 7:
printf("星期天\n");
}
return 0;
}
- 正确代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int day = 3;
switch (day)
{
case 1:
printf("星期1\n");
break;
case 2:
printf("星期2\n");
break;
case 3:
printf("星期3\n");
break;
case 4:
printf("星期4\n");
break;
case 5:
printf("星期5\n");
break;
case 6:
printf("星期6\n");
break;
case 7:
printf("星期天\n");
break;
}
return 0;
}
2. 其他形式
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
//1,2,3,4,5 工作日
//6,7 休息日
int day = 3;
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default:
printf("选择错误\n");
break;
}
return 0;
}
(二)default子句
如果表达的值与所有的case标签的值都不匹配怎么办?
其实也没什么,结构就是所有的语句都被跳过而已。
程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。
但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?
你可以在语句列表中增加一条default子句,把下面的标签
default:
写在任何一个 case 标签可以出现的位置。
当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
所以,每个switch语句中只能出现一条default子句。
但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int day = 9;
switch (day)
{
case 1:
printf("星期1\n");
break;
case 2:
printf("星期2\n");
break;
case 3:
printf("星期3\n");
break;
case 4:
printf("星期4\n");
break;
case 5:
printf("星期5\n");
break;
case 6:
printf("星期6\n");
break;
case 7:
printf("星期天\n");
break;
default:
printf("选择错误!\n");
break;
}
return 0;
}
1. switch嵌套
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:m++;
case 2:n++;
case 3:
switch (n)
{//switch允许嵌套使用
case 1:n++;
case 2:
m++;n++;
break;
}
case 4:
m++;
break;
default:
break;
}
printf("m = %d, n = %d\n", m, n);
//
return 0;
}
四、while循环
(一) while语句中的break
1. 作用
- 在循环中只要遇到break,就停止后期的所有的循环,直接终止循环,while中的break是用于永久终止循环的
(二) while语句中的continue
1. 作用
- continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断
(三)总结
五、for循环
(一) 语法
for(表达式1; 表达式2; 表达式3)
循环语句;
- 表达式1为初始化部分,用于初始化循环变量的
- 表达式2为条件判断部分,用于判断循环时候终止
- 表达式3为调整部分,用于循环条件的调整
(二) break和continue在for循环中
(三)一些for循环的变种
1. for循环中的判断部分如果省略,就意味着判断恒为真
2. 省略初始化部分
3. 易错
六、do...while()循环
(一) 语法
do
循环语句;
while(表达式);
(二)执行流程
(三) 举例
七、常见关键字
auto break case char const continue default do double else enum
extern float for goto if int long register return short signed
sizeof static struct switch typedef union unsigned void volatile while