目录
关键字static
#define 定义常量和宏
1.static 可以修饰局部变量,全局变量,函数。
修饰局部变量(可以使局部变量的生命周期变长。)
如:
#includevoid test() { static int a=1;//此处a为局部变量 a++; printf("a=%dn",a); } int main() { int i=0; while(i<5) { test(); i++; } return 0; }
输出的结果是a=2,3,4,5,6。如果把static去掉则输出的结果是:2,2,2,2,2。
所以说明static修饰局部变量时使局部变量的生命周期变长了。
2,修饰全局变量 (改变了全局变量的作用域——让静态的全局变量只能在它自己的源文件中使用,出了该文件在另一个源文件中就不能使用) 如:
一个文件
#includeint main() { extern int a; printf("%dn", a); return 0; }
另一个文件
static int a = 10;
编译器会报错,但如果去掉static则可以编译成功,打印的结果为10.
修饰函数:改变了函数的链接属性
(static修饰函数与修饰全局变量差不多,会使外部链接属性变成内部链接属性)
如:1文件
#includeint main() { extern sum(); int c = 0; c = sum(3, 6); printf("c=%dn", c); return 0; }
2文件
static int sum(int a, int b)
{
int z = 0;
z = a + b;
return z;
}
其中在1文件运行过程中会报错,就是上面我说的改变了文件的链接属性;但是如果去掉static则在1文件中可以运行。
#define 定义常量和宏
#define 定义常量在前面的博客中已经提过
//这是一般的定义函数 #includeint MAX(int x, int y) { if (x>y) return x; else return y; } int main() { int a=10,b=11; int c = MAX(a,b); printf("c=%dn", c); return 0; }
下面讲一下#define 的宏
#include#define MAX(x,y) (x>y?x:y) int main() { int a = 10, b = 11; int max = MAX(a, b); printf("max=%d", max); return 0; }
预告明天更新1:初识C语言——指针
2:部分博客更改



