extern 和 static (1) extern 表明该变量在别的地方已经定义过了,在这里要使用那个变量. (2) static 表示静态的变量,分配内存的时候, 存储在静态区,不存储在栈上面. static 作用范围是内部连接的关系, 和extern有点相反.它和对象本身是分开存储的,extern也是分开存储的,但是extern可以被其他的对象用extern 引用,...
static:静态存储类别,用于定义全局变量或局部变量,表示变量在程序运行期间一直存在,初始值为0或常量表达式。extern:外部存储类别,用于声明在其他文件中定义的全局变量,表示变量可以在多个文件中共享,初始值由定义时指定。register:寄存器存储类别,用于定义局部变量,表示变量尽可能存储在寄存器中,以提高访问速度,初...
num =0 //test1 num=10a=10 //extern修饰的全局变量,表示当前变量可以在本文件中使用,也可以在其他文件中使用 test2 a=10 (二) #include <stdio.h>#include<stdlib.h>#include"test.h"static int num = 15;//可以声明同名变量//extern int a=15;//编译不通过,因为 test.c文件中已经定义a了printf("...
extern是用来声明已经定义过而且能够访问的变量,虽然test.c中有定义过变量a,但是test.c中变量a的作用域是只限于test.c文件,main.c没有访问权限,所以main.c中的extern是废的。 链接的时候报错:标示符a未定义 除非main.c自己定义一个变量a,这样子extern才是有效的,不过这时候main.c和test.c中的变量a是分别代表...
2.extern 在定义函数时,如果在函数的最左边加上关键字extern,则表示此函数是外部函数,可供其他文件调用。C语言规定,如果在定义函数时省略extern,则隐含为外部函数。 在一个文件中要调用其他文件中的外部函数,则需要在当前文件中用extern声明该外部函数,然后就可以使用,这里的extern也可以省略。
4. 寄存器变量(register): 书上说寄存器变量会尽量把变量放到寄存器(而不是栈或堆), 从而加快存取速度, 我试了一下, 效果一般般. 5. extern 关键字: 使用外部全局变量应该用 extern 重新声明一下; 如果不使用 extern, 将是重新定义; 在链接阶段, 同一程序中不同单元的全局变量是共用的所以不能重新定义; ...
static的作用是将标识符的作用域限定在本文件中,并且static 和 extern 不能同时修饰一个变量。我们从上文知道了只有extern是函数的声明,那么所有static修饰的变量都是定义式。 //B.hstaticinty;//定义//B.cpp#include"B.h"//int y = 100; //已经定义过,这样写会报错voidInitY(int&var){var=100;}//Main...
1.2 关于extern关键字 要注意的是,全局变量可以在许多地方声明为extern,但定义(赋初值)只能一次。而上面的代码既声明,也定义了一个全局变量lastNum。其中,定义的时候并不需要extern专门来修饰。倒是在其他不需要定义该全局变量的地方,需要extern来修饰该全局变量,声明要调用外部变量了。
extern关键字用来修饰全局变量, 代表声明一个全局变量 注意:声明全局变量和声明函数一样, 仅仅是告诉系统我们有这个全局变量, 但并不会真在的开辟存储空间 2.2-内部全局变量:只要给全局变量加上static关键字就是内部全局变量 什么是内部全局变量? 只能被当前文件访问的全局变量我们称之为内部全局变量 ...
2) 如果你的全局变量是打算给其他文件使用的,那么就不要加上static,因为这样在其他文件中可以使用extern对该定义进行引用。 3) 这么说来,static 和extern是不能同时用来修饰一个变量的。extern修饰表示该变量只是声明,声明它使用了其他文件的变量定义,static的修饰表示我这个变量(自己定义的),只能被当前文件访问。两者...