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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘唐飞 中级黑马   /  2015-7-29 00:11  /  677 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

分不清楚他俩,求大牛解或

2 个回复

正序浏览
楼上正解
回复 使用道具 举报
讲到extern与static就要先说明一下"链接属性"
链接属性一共有3种---external(外部)、internal(内部)、none(无)

属于internal链接属性的标识符在同一源文件内的所有声明中都指向同一个实体,但位于不同源文件的多个声明则分属于不同的实体.

没有链接属性的标识符是none,总是被当做单独的个体,也就是所该标识符的多个声明被当做独立不同的实体

属于extern链接属性的标识符不论声明多少次,位于几个源文件都表示同一个实体.

关键字extern和static用于声明中改变标识符的链接属性.如果某个声明在正常情况下具有external链接属性,在它的前面加上static关键字可以使它的连接属性变为internal.
static只对缺省值(默认)链接属性为external的声明才有改变链接属性的效果
对于extern,一般而言,他为一个标识符指定external链接属性,这样就可以访问在其他任何位置定义的这个实体。
当extern关键字用于源文件中一个标识符的第一个声明是,他指定该标识符具有external链接属性.但是,如果它用于该标识符的第2次或以后的声明时,他并不会更改第一次声明所指定的链接属性
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马