extern修饰全局变量C语言
时间: 2024-05-10 18:11:12 浏览: 109
extern是C语言中用来声明全局变量或函数的关键字。它的作用是告诉编译器该变量或函数是在其他文件中定义的,而不是当前文件中定义的。
当我们在一个文件中使用extern修饰全局变量时,它表示该变量在其他文件中已经定义了。这样,在编译时,编译器会在其他文件中查找该变量的定义,并将其链接到当前文件中。
使用extern修饰全局变量的语法如下:
extern 数据类型 变量名;
例如,我们在文件A.c中定义了一个全局变量num:
int num;
如果我们在文件B.c中想要使用这个全局变量,可以在B.c中使用extern关键字进行声明:
extern int num;
这样,编译器就知道num是在其他文件中定义的全局变量,并会将其链接到B.c中。
需要注意的是,extern关键字只是用来声明全局变量或函数,并不会为其分配内存空间。实际的内存分配是在定义该变量或函数的文件中进行的。
相关问题
extern修饰局部变量用法
extern修饰局部变量的用法是不合法的。extern关键字用于声明外部变量或函数,也就是在当前文件之外定义的变量或函数。它通常用于在不同的源文件之间共享变量或函数的定义。在C语言中,局部变量仅在其定义所在的块或函数内部可见,因此不需要使用extern来声明局部变量。只有全局变量才能使用extern关键字进行声明。
c语言静态局部变量 静态全局变量
在C语言中,静态局部变量和静态全局变量是两种不同作用域的静态存储类变量。
静态局部变量是在函数内部定义的变量,但它具有静态存储期。这意味着它的生命周期贯穿整个程序执行期间,而不是仅在函数调用期间。静态局部变量在程序执行开始时被初始化,且只初始化一次,之后即使函数执行完毕,该变量的值也不会丢失,它会在下一次函数调用时保持上次的值。
静态全局变量是在函数外部定义的变量,并且被`static`关键字修饰。它有以下几个特点:
1. 静态全局变量的作用域被限定在定义它的文件内部,其他文件不能访问它,除非使用extern关键字声明。
2. 它具有全局作用域,因此它的生命周期也是贯穿整个程序执行期间。
3. 它的默认初始值为0(不同于自动存储类变量,这些变量不会自动初始化)。
这里是一个简单的例子来说明它们的用法:
```c
#include <stdio.h>
void func() {
static int count = 0; // 静态局部变量
count++;
printf("Function count: %d\n", count);
}
int staticGlobalVar = 0; // 静态全局变量
int main() {
func(); // 第一次调用,count将初始化为0并打印1
func(); // 第二次调用,count为1(上次调用后的值),打印2
// staticGlobalVar在main函数中不可见,但在其他同文件函数中可见
return 0;
}
```
这段代码展示了如何在C语言中使用静态局部变量和静态全局变量。静态局部变量`count`在多次函数调用中保持了其值,而静态全局变量`staticGlobalVar`在整个文件中是可见的,但在其他文件中默认是不可见的。
阅读全文