1,static与extern
static 是 静态 的意思 可以用来:修饰局部变量、全局变量、函数
extern 是用来声明外部符号的
2,作用域
一个变量在哪里可以使用,哪里就是他的作用域
局部变量的作用域就是在局部,生命周期在局部
全局则在全局,生命周期在全局,也就是程序的整个生命周期,全局变量是具有外部链接属性的
//局部变量的作用域
//这种情况下起作用
#include <stdio.h>
int main()
{
int a = 10;
printf("%d\n", a);
return 0;
}
//这种情况下不起作用
#include <stdio.h>
int main()
{
{
int a = 10;
}
printf("%d\n", a);
return 0;
}
//全局变量的作用域,作用与整个项目
#include <stdio.h>
void text()
{
printf("3:c = %d\n", a);
}
int main()
{
{
printf("1:a = %d\n", a);
}
printf("2:a = %d\n", a);
text();
return 0;
}
3,static 效果是 出函数后不销毁
//static修饰局部变量使得局部变量的生命周期变长,作用域不变
#include <stdio.h>
void text()
{
static int a = 1;//static的作用是出了函数后的a是没有被销毁的
a++;
printf("%d ", a);
}
int main()
{
int i = 0;
for (i = 0; i < 5; i++)
{
text();
}
return 0;
}
static int g_val = 2025;
static int g_val = 2025;//全局变量默认是具有外部属性的,但是加上static后就会使得全局变量失去链接外部属性的功能 ,外部链接属性变成内部链接属性,这种变量只能在自己所在的.c文件内使用,其他源文件看不到。
extern int g_val;//声明来自外部属性的符号