11、常见关键字
1.C语言提供了丰富的关键字,这些关键字都是语言本身预先设定好的,具有特定含义、专门用作特定用途的C语言标识符,也称保留字,用户自己是不能创造关键字的。 标准C语言中共有32个关键字。
2.分类
(1)数据类型关键字:char(字符型),int(整形),double(双精度浮点型),float(单精度浮点型),short(短整型),signed(有符号的),unsigned(无符号的),long(长型),struct(结构体类型),union(共用体类型),enum(枚举类型),void,
(2)存储类型关键字:auto,static,register(寄存器),extern(声明外部符号)
(3)其它关键字:const(修饰常变量),sizeof(计算类型或变量所占内存空间的大小),volatile,typedef(类型重命名)
(4)控制语句关键字:break,continue,if,else,switch,case,default,goto,do,while,for,return(返回)
3.补充:
(1)特定字-就是特殊含义的标识符,虽然不是关键字,但习惯上把他们看成关键字。有:
define,endif,line,include等
(2)标识符
用途:所谓标识符就是用来标识在C语言中出现的符号常量、变量、数据类型、函数和语句的字符序列。
定义:C语言规定,标识符由字母、数字、下划线组成,且第一个字符不能使用数字字符。
标识符需注意以下几点:
1、标识符的有效长度随系统而异,建议标识符不要超过8个字符。如student_num
2、标识符命名的良好习惯——见名知意。如:name(姓名)、age(年龄)
3、C语言的关键字和特定字不能用作用户自定义的标识符。
4、C语言区分大小写。如Name和name是不同的标识符
5、C语言有许多库函数,尽量不要与库函数同名
先介绍以下几个关键字,后期遇到讲解。
11.1 关键字 typedef
typedef 顾名思义是类型定义,这里应该理解为类型重命名。
11.2 关键字static
在 C 语言中:
static 是用来修饰变量和函数的
1. 修饰局部变量 - 称为静态局部变量
2. 修饰全局变量 - 称为静态全局变量
3. 修饰函数 - 称为静态函数
11.2.1修饰局部变量
如上,我们可知:
1、内存图
2、
(1)普通的局部变量是放在栈区上的,这种局部变量进入作用域创建,出了作用域释放。 (2)但是局部变量被static修饰后,这种变量就放在静态区,放在静态区的变量,创建好后,直到程序结束才释放。
(3)本质上:static的修改改变了局部变量的存储位置,因为存储位置的差异,使得执行效果不一样。
注意:被static修饰是不影响作用域的!!!但是生命周期发生了变化,变长了。
11.2.2static修饰的全局变量
从上机实践中我们发现:
(1)全局变量本身是具有外部链接属性的,在A文件中定义的变量,在B文件中可以通过[链接]使用(extern-声明外部符号)
(2)但是如果全局变量被static修饰,这个外部链接属性就变成了内部链接属性,这个全局变量只能在自己所在的源文件内部使用
(3)static的修饰,会把外部链接属性变成内部链接属性,最终使得全局变量的作用域变小了
11.2.3修饰函数
从截图我们可知:
(1)函数本身是具有外部链接属性的
(2) 函数被static修饰后,外部链接属性就变成了内部链接属性,使得这个函数只能在自己所在的源文件内部使用,其他源文件无法使用(限制 了作用域)
总结:
(1)局部没有链接,全局才有链接
(2)static修饰局部变量不影响作用域!!!但是生命周期变长了
(3)static修饰全局变量和函数,限制的是作用域
(4)函数没有生命周期,他只是一个代码
#include“add.c”??(不建议)
头文件:
类型的定义
头文件的包含
函数的声明
11.3关键字register-寄存器
register-寄存器
计算机上,数据都可以存储在哪里?
注意:register只是建议的作用,会不会放在寄存器,编译器决定
12.#define定义常量和宏
1.#define定义符号常量(也叫标识符常量)
格式:#define 常量名 字面常量
2.#define定义宏
格式:#define 宏(形参) 宏体
补充:宏VS函数
(1)函数的形参有类型
(2)函数有{},
(3)宏一般就处理非常简单的逻辑