一、static-静态的
1.static修饰局部变量
改变了局部变量的生命周期(本质是改变了变量的存储类型:局部变量的存储位置,由:栈区——>静态区)
使用static修饰的局部变量:离开局部范围时,局部变量不销毁
2.static修饰全局变量
使用static修饰的全局变量,使得全局变量只能在自己的源文件(.C文件)中使用
未使用static修饰的全局变量,具有外部链接属性,可以在其他源文件中使用
使用static修饰后的全局变量,改变了全局变量的链接属性,由:外部链接属性——>内部链接属性
3.static修饰函数
同2
二、define-预处理指令
1.define定义符号
#define MAX 1000
2.define定义宏
#define ADD(x,y)((x)+(y))
三、指针(地址)
1.内存
1-1. 内存怎么编号
编号——地址
1-2. 1个内存单元是多大空间
1个内存单元是1个字节
1-3. %p
%p用来打印地址
【
int* pa = &a;
*:说明pa是指针类型
int:说明pa执行的对象是int类型的
】
【
*pa = 20;
*:解引用操作
*pa:通过pa的地址找到a
】
2.指针大小
指针的大小是相同的
原因:指针是用来存放地址的
指针需要多大空间,取决于地址的存储需要多大空间
四、C语言——结构化程序设计语言
C语言中的真假
真:非0
假:0
1.顺序结构
2.选择结构
2-1 if语句
if(条件)
{
return x;
}
else
{
return y;
}
【
if(5 == num)
常量放在左边,变量名放右边
】
2-2 switch语句
switch(整型表达式)
{
case 整型常量表达式:
语句;
break;
...
default:
语句;
break;
}
【
case:入口
break:出口
】
示例:
int main()
{
//接收数据
int day = 0;
//输入数据
scanf("%d", &day);
switch (day)
{
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
case 4:
printf("Thursday\n");
break;
case 5:
printf("Friday\n");
break;
case 6:
printf("Saturday\n");
break;
case 7:
printf("Monday\n");
break;
default:
printf("输入错误\n");
break;
}
return 0;
}
3.循环结构
3-1 while循环
while(条件表达式)
{
语句;
}
【
while循环中
break的作用:永久的终止循环
continue的作用:跳过本次循环continue后面的代码,直接去判断条件表达式部分,看是否执行下一次循环
】
【
清理缓冲区多个字符:
int tmp = 0;
while ( ( tmp = getchar ( ) ) != '\n'
{
;
}
】
【
int password[20] = {0};
scanf(“%s”,password);
数组名本身就是地址,因此scanf时不需要取地址符”&“
】
3-2 for循环
for(表达式1(初始化语句);表达式2(判断语句);表达式3(调整语句))
{
循环 语句;
}