A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhaofeizlj 中级黑马   /  2015-7-12 10:09  /  925 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

static和extern的区别

4 个回复

倒序浏览
extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其它模块中寻找其定义。另外,extern也可用来进行链接指定。
static作为关键字和函数出现,在其他的高级计算机语言如FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、PROLOG、Ada等语言中也是有出现的,只是有着不同的作用。
区别在于:
1、全局变量是不显式用static修饰的全局变量,全局变量默认是有外部链接性的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量;
2、全局静态变量是显式用static修饰的全局变量,作用域是声明此变量所在的文件,其他的文件即使用extern声明也不能使用。
回复 使用道具 举报
static标识的变量表示该变量只能在该区域内可见,ertern不能用来定义变量,只能用来告诉编译器,这个变量在别处定义,引用的外来变量。一般是全局变量
回复 使用道具 举报
同意楼上观点
回复 使用道具 举报
static是静态存储类型,属于局部变量,只能用于同一个函数内,在其他函数内使用是错误的。extern是外部存储类型,属于全局变量,可以用于从他定义开始的后续所有函数内。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马