关键字
1.typedef
typedef理解为重命名
typedef unsigned int uint_32
int main()
{
unsigned int num1=0;
uint_32 num2=0;
return 0;
//num1和num2的类型是一样的
}
2.static
static是用来修饰变量和函数的
修饰局部变量-静态局部变量
2.修饰全局变量-静态全局变量
3.修饰函数-静态函数
1.修饰布局变量
static修饰局部变量,第一次执行初始化,出函数后没有销毁,以后不再执行初始化
viod test()
{
int i=0;
i++;
printf("%d ",i);
}
int main()
{
int i=0;
while(i<10)
{
test();
}
return 0;
}
//打印10个1;
//-----------------------------------------------
viod test()
{
static int i=0;
i++;
printf("%d ",i);
}
int main()
{
int i=0;
while(i<10)
{
test();
}
return 0;
}
//打印1-10
2.修饰全部变量
在一个工程下,一个.c文件里的全部变量在另一个.c文件里依旧可以用(用一个entern声明一下是外部的)
变量加了static后就不可以用了
因为static修饰使得这个全局变量只能在自己所在的源文件内部使用,其他文件不能使用
全局变量可以在其他源文件内使用是因为全部变量具有外部链接属性,但是被static修饰后就变成了内部链接属性,其他的源文件就不能链接到这个静态的全局变量
3.修饰函数
同上文的修饰全局变量一样,static将函数的外部链接属性改为内部链接属性使得外部的源文件无法使用
define
1.define定义常量
#define MAX 1000
2.定义宏
#define ADD(x,y) x+y
#include "stdio.h"
int main()
{
int sum1 = ADD(2,3);
int sum2 = 2 * ADD(2,3);
printf("%d %d",sum1,sum2);
return 0;
}
//sum1 = 5; sum2 = 7
因为定义宏也相当于是起了个别名;2*ADD(2,3)就相当于2 * x + y