目录
6.1初识关键字
C语言的关键字,不能是自己创建的。
变量名不能是关键字
6.2看下表
auto | break | case | char | const | contiune | default |
do | double | else | enum | extern | float | for |
goto | if | int | long | register | return | short |
signed | sizeof | static | switch | typedef | union | unsigned |
void | volatile | while |
1.auto :是自动的,没一个局部变量都是auto修饰。 | 2.break: 用于循环。 | 3.case:与switch一起使用。 | 4.char:字符类型。 | 5.const :常量不能改。 | 6.contine :继续的意思。 |
7.default :默认。 | 8.do: 用于循环。 | 9.double: 数据类型:浮点型。 | 10.else :与if关键字要一起使用。 | 11.enum :枚举。 | 12.extern :用来声明外部符号。 |
13.float :数据类型:浮点型。 | 14.for:用于控制循环语句。 | 15.goto:无条件转移语句。 | 16.if:与else搭配。 | 17.register:寄存器。 | 18.return:返回。 |
19.short:短整型。 | 20.singed:有符号的。例如-10,10。 | 21.unsinged:无符号的。 | 22.static:静态。 | 23.union:联合体共用体。 | 24.viol:空 |
25.while:循环 |
6.3auto:例子
int main()
{
int char;
{
int a =10;//自动创建自动销毁
}
return 0;
}
6.4register:寄存器。
int main()
{
// register将大量或者频繁使用的数据存放在寄存器中,提高效率
register int num =10;
return 0;
}
注意在代码中:define与includ都不是关键字,是预处理指令
6.2介绍
6.2.1:typedef 类型重定义
typedef yinzili int yin
int main()
{
yinzili int unm = 10;
yin num=10;
return 0;
}
这里的yinzili=yin 在经过typedef 类型重定义之后二者相等。也就是说typedef 的作用就是给变量名起一个小名。
6.2.2:了初步关键字static: 静态的。
1.static:修饰局部变量
//static修饰之前的代码
void ty() {
int a = 1;//此处a为局部变量
a++;
printf("%d ",a);
}
int main()
{
int i = 0;
while (i<10) {
ty();
i++;
}
return 0;
}
//static修饰之后的代码
void ty() {
static int a = 1;//此处a为局部变量
a++;
printf("%d ",a);
}
int main()
{
int i = 0;
while (i<10) {
ty();
i++;
}
return 0;
}
从上面图可以看出在经过static修饰过的局部变量的生命周期会发生改变,所以static修饰局部变量其本质是改变局部变量的生命周期。
1.static:修饰全局变量
未被static修饰之前
被static修饰之后
有图可看出:全局变量具有在其他源文件内部也可以使用,是因为全局变量具有外部链接的属性。
全局变量经过static修饰之后全局变量的外部链接属性被改变为内部属性其他源文件就不能链接上了通俗说static修饰全局变量之后,会将全局变量的使用范围进行限定,失去全局变量的原有属性。
1.static:修饰函数
函数未被static修饰时
函数被static修饰时
static修饰函数与static修饰全局变量是相同的性质。
6.2.3:了解define 定义常量与宏。
define:预处理指令
1.define定义符号
#define max 100
int main()
{
printf("%d \n",max);
return 0;
}
//其运行结果为100
2.define定义宏
//defint 定义宏
#define YIn(x,y)x+y
int main()
{
int sum = YIn(3, 8);
printf("%d\n",sum);
return 0;
}
//结果为11
#define YIn(x,y)x+y
//#define YIn(x,y)((x)+(y))
int main()
{
int sum0 = 10*YIn(3, 8);
printf("%d\n", sum0);
return 0;
}
//结果为38
在define定义宏时遇到乘法时其结果并不是我们想要的结果,在上面例子上10*3+8上面是先运算10*3然后再加上8故得到38,而在int sum0 = 10*YIn(3, 8);中我们想要的是先让3和8相加然后再10相乘,在这人里我们就要将#define YIn(x,y)x+y变成#define YIn(x,y)((x)+(y))之后就可以得到我们想要的结果。