黑马程序员技术交流社区

标题: static和extern的区别 [打印本页]

作者: zhaofeizlj    时间: 2015-7-12 10:09
标题: static和extern的区别
static和extern的区别
作者: dlamgg    时间: 2015-7-12 10:15
extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其它模块中寻找其定义。另外,extern也可用来进行链接指定。
static作为关键字和函数出现,在其他的高级计算机语言如FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、PROLOG、Ada等语言中也是有出现的,只是有着不同的作用。
区别在于:
1、全局变量是不显式用static修饰的全局变量,全局变量默认是有外部链接性的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量;
2、全局静态变量是显式用static修饰的全局变量,作用域是声明此变量所在的文件,其他的文件即使用extern声明也不能使用。
作者: 杨远鹏    时间: 2015-7-12 10:16
static标识的变量表示该变量只能在该区域内可见,ertern不能用来定义变量,只能用来告诉编译器,这个变量在别处定义,引用的外来变量。一般是全局变量
作者: pacio    时间: 2015-7-12 10:20
同意楼上观点
作者: flymanshow    时间: 2015-7-12 11:06
static是静态存储类型,属于局部变量,只能用于同一个函数内,在其他函数内使用是错误的。extern是外部存储类型,属于全局变量,可以用于从他定义开始的后续所有函数内。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2