一、static 关键字作用
- 对储存方式而言:static修饰的变量储存在静态储存区默认值为 0 并具备持久性,静态储存区的变量程序退出才被释放
- 对于局部变量而言: static修饰的局部变量储存地方由栈区变为静态储存区默认值为 0 并具备持久性,函数退出后不会被释放直到程序退出才被释放。
- 对于全局变量与函数而言: static修饰的全局变量和函数限制了其作用域在本文件内,可以在不同的文件中定义同名变量和同名函数
二、extern 关键字作用
声明外部变量,扩大作用域
- 例同一文件内:main函数想要调用main函数之后定义的变量a,变量a的作用域不包含main函数,直接调用必然出错,则需要在调用前使用extern声明此变量扩大作用域,被声明后的变量作用域与局部变量或全局变量的作用域一致
#include <stdio.h>
int main()
{
extern int a;
printf("%d\n", a);
return 0;
}
int a = 10;
- 不同文件中:不使用extern声明的外部变量也可以使用,使用其的目的是告知程序员该变量或函数在别处定义
***********main.c***********
#include <stdio.h>
int main()
{
extern int a;
printf("%d\n", a);
return 0;
}
***********text.c***********
int a = 10;
****************************
输出结果 10
- extern “C”: C++代码调用 C 语言代码。在 C++的头文件中使
三、注意
- extern无法声明static修饰的对象