1. 关键字
1.1 typedef(类型重定义)
看下面代码:typedef可以将一个类型重命名,举一个不恰当的例子,可以将int自定义为ZX,这样整型就有两个名字,一个是int,一个是ZX,都可以声明整型变量。
这种用法多用在复杂的变量中:
typedef struct Node { int data; int price }Node; int main() { //重定义后,我们声明变量的工作量就变小了! struct Node b = { 11,15 }; Node a = { 11,55 }; }
1.2 static
static可以修饰:局部变量、全局变量、函数
1.2.1 修饰局部变量
先看一段简单的代码运行结果:
static修饰局部变量a,是改变了变量的存储类型。本来局部变量是放在栈区的,被static修饰后存放在内存的静态区了,因为存储类型的改变,从而导致生命周期变长。但是不影响作用域,a只能在该函数内部使用。
1.2.2 修饰全局变量
全局变量是具有外部链接属性的,而static修饰全局变量后,将外部链接属性变成了内部链接属性。此时的全局变量只能在自己所在的.c文件中使用,其他文件无法链接使用。
1.2.3 修饰函数
函数具有外部链接属性,static修饰函数后,将外部链接属性改变成了内部链接属性,使得这个函数只能在自己所在的.c文件中使用,其他.c文件无法链接使用。
2. 操作符
2.1 条件操作符
条件操作符又叫三目操作符:exp1?exp2:exp3
如果exp1表达式结果为真,输出exp2表达式的值,否则输出exp3表达式的值。
用好三目运算符能够简化代码逻辑。
2.2 逗号表达式
(exp1,exp2,exp3,exp4)从左往右依次计算,结果为最后一个表达式的结果。
3. 指针
指针就是地址,地址就是指针
下面为指针最基本的用法:
4. 结构体
当我们修饰复杂的数据类型时,可以考虑使用结构体,比如:形容一个人的名字和年龄。
注:*pa等价于a。