extern是用来声明外部符号的,如果一个全局的符号在A文件中定义的,在B文件中想使用,就可以使用 extern 进行声明,然后使用。 代码1正常,代码2在编译的时候会出现链接性错误。 结论: 一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使用。 本质原因是 全局变量默认是具有外部链接属...
static:静态存储类别,用于定义全局变量或局部变量,表示变量在程序运行期间一直存在,初始值为0或常量表达式。extern:外部存储类别,用于声明在其他文件中定义的全局变量,表示变量可以在多个文件中共享,初始值由定义时指定。register:寄存器存储类别,用于定义局部变量,表示变量尽可能存储在寄存器中,以提高访问速度,初...
static声明变量:用static声明的静态局部变量,在函数调用结束后不消失,反而保留当前的数据,在下一次该函数调用时,该变量现有的值就是上一次函数调用结束时的值。 一般用static声明一个变量的作用有二:(1)对局部变量用static声明,则为该变量分配的空间在整个程序执行期间始终存在。(2)对全部变量用static声明,则该变量...
extern是用来声明已经定义过而且能够访问的变量,虽然test.c中有定义过变量a,但是test.c中变量a的作用域是只限于test.c文件,main.c没有访问权限,所以main.c中的extern是废的。 链接的时候报错:标示符a未定义 除非main.c自己定义一个变量a,这样子extern才是有效的,不过这时候main.c和test.c中的变量a是分别代表...
(1)所有全局变量都是静态变量,都存在静态存储区。 (2)所有外部变量不加static修饰,都可以使用关键字extern来声明(格式为 extern(int可省略类型) a;),可以扩张其作用域从声明处开始,还可以跨源文件声明使用。 (3)在外部变量前面加static修饰符,可将外部变量限制在本文件中。这里有一个坑,如果变量为static全局变量...
下面是C语言中static和extern的'区别,一起来学习下吧: static: 一、在C中,static主要定义全局静态变量、定义局部静态变量、定义静态函数。 1、定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量。全局静态变量有以下特点。 a.在全局区分配内存。 b.如果没有初始化,其默认值为0. c....
1.extern可以用来声明一个全局变量,但是不能用来定义变量 2.默认情况下,一个全局变量是可以供多个源文件共享的,也就说,多个源文件中同名的全局变量都代表着同一个变量 3.如果在定义全局变量的时候加上static关键字,此时static的作用在于限制该全局变量的作用域,只能在定义该全局变量的文件中才能使用,跟其他源文件中...
- `auto`关键字用于声明自动存储变量,它是默认的存储类别。 - `static`关键字用于限制变量的作用域或延长变量的生命周期。 - `register`关键字指示编译器将变量存储在寄存器中,但现代编译器已经智能地处理这个问题。 - `extern`关键字用于声明在其他源文件中定义的全局变量或函数。
static 表示静态的变量,分配内存的时候, 存储在静态区,不存储在栈上面。 static 作用范围是内部连接的关系,和extern有点相反.它和对象本身是分开存储的,extern也是分开存储的,但是extern可以被其他的对象用extern引用,而static 不可以,只允许对象本身用它。具体差别首先,extern和static不能同时修饰一个变量;其次,static...
1、extern可以用来声明一个全局变量,但是不能用来定义变量 2、默认情况下,一个全局变量是可以供多个源文件共享的,也就说,多个源文件中同名的全局变量都代表着同一个变量 3、如果在定义全局变量的时候加上static关键字,此时static的作用在于限制该全局变量的作用域,只能在定义该全局变量的文件中才能使用,跟其他源文件...