extern和static的作用
时间: 2023-04-05 14:02:01 浏览: 112
extern和static都是C语言中的关键字,用于控制变量和函数的作用域和链接属性。
extern用于声明一个变量或函数是在其他文件中定义的,可以在当前文件中使用。static用于限制变量或函数的作用域,使其只能在当前文件中使用。
具体来说,extern用于声明全局变量或函数,表示该变量或函数在其他文件中定义,可以在当前文件中使用。而static用于声明局部变量或函数,表示该变量或函数只能在当前文件中使用,不能被其他文件访问。
总之,extern和static都是用于控制变量和函数的作用域和链接属性,可以根据需要灵活使用。
相关问题
c语言extern和static的作用
在C语言中,extern和static是两个关键字,它们的作用如下:
1. extern关键字
extern用于声明一个变量或函数是在其他文件中定义的,也就是说,它告诉编译器该变量或函数并没有在本文件中定义,需要在其他文件中寻找定义。在使用extern关键字时,不会为该变量或函数分配内存空间。
示例:
```c
// 文件a.c
extern int num; // 声明变量num在其他文件中定义
// 文件b.c
int num = 10; // 定义变量num并赋值为10
```
2. static关键字
static可以用于变量和函数,其作用如下:
- 对于变量,static可以使变量的作用域限定在当前文件中,即该变量只能在当前文件中被访问。此外,static还可以使变量的生命周期变为整个程序运行期间,即该变量在程序启动时被创建,直到程序结束时才被销毁。
- 对于函数,static可以使函数的作用域限定在当前文件中,即该函数只能在当前文件中被调用。此外,static还可以使函数不能被其他文件调用。
示例:
```c
// 文件a.c
static int num = 10; // 声明静态变量num,作用域仅限于当前文件
static void test() { // 声明静态函数test,作用域仅限于当前文件
printf("Hello World!");
}
// 文件b.c
int main() {
printf("%d", num); // 编译错误,变量num作用域仅限于文件a.c
test(); // 编译错误,函数test作用域仅限于文件a.c
return 0;
}
```
extern和static
extern和static是C++中的两个关键字,它们都可以用于函数和变量的声明和定义。
extern关键字用于声明一个在其他文件中定义的全局变量或函数,它告诉编译器该变量或函数的定义在别的文件中,需要在链接时进行连接。在头文件中使用extern声明函数或变量,可以在其他文件中使用该函数或变量。
static关键字有两种用法,一种是用于局部变量,表示该变量在程序运行期间只被初始化一次,不会被销毁,可以在函数调用之间保持其值。另一种用法是用于全局变量或函数,表示该变量或函数只在当前文件中可见,不能被其他文件访问。
举个例子,如果在一个头文件中声明了一个全局变量,可以在其他文件中使用extern关键字来引用该变量;如果在一个函数中定义了一个静态变量,该变量的值会在函数调用之间保持不变。