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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ff774411 中级黑马   /  2015-10-16 15:44  /  1082 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

static 对函数的作用:
1> 定义一个内部函数
2> 声明一个内部函数


extern 对函数的作用:
1>完整地定义一个外部函数
2>完整地声明一个外部函数
(extern可以省略,默认情况下声明和定义的函数都是外部函数)

对变量的作用

1.对全局变量的作用
1>全局变量分两种:
    外部变量:定义的变量能被本文件和其他文件访问
        1>默认情况下,所有的全局变量都是外部变量
        2>不同文件中的同名外部变量,都代表着同一个变量,而且可以重复定义,               
           如果用得到,那就必须在其他文件中重复声明一下
    内部变量:定义的变量只能被本文件访问,不能被其他文件访问。
        1> 不同文件中的同名内部变量,互不影响
2>
static 对变量的作用:
    定义一个内部变量

extern对变量的作用:
    声明一个外部变量

static 对函数的作用:
    定义和声明一个内部函数

extern 对函数的作用:
    定义和声明一个外部函数(可以省略)

2.static对局部变量的作用
static 修饰局部变量(改变生命周期,不改变作用域)
     1> 延长局部变量的生命周期:程序结束的时候局部变量才会被销毁
     2> 并没有改变局部变量的作用域
     3> 所有的test函数都共享着一个static变量
     4> static修饰局部变量的使用场合:
            如果某个函数的调用频率特别高
            这个函数内部的某个变量值是固定不变的

总结
1.extern可以用来声明一个全局变量,但是不能用来定义变量
2.默认情况下,一个全局变量是可以供多个源文件共享的,也就说,多个源文件中同名的全局变量都代表着同一个变量
3.如果在定义全局变量的时候加上static关键字,此时static的作用在于限制该全局变量的作用域,只能在定义该全局变量的文件中才能使用,跟其他源文件中的同名变量互不干扰
4.如果在定义局部变量的时候加上extern关键字,此时的作用在于改变这个变量的生命周期,这个变量的生命周期变为从定义的时候起,一直到整个程序结束。但是作用域不会变,定义在哪个函数里面还是只在哪个函数里面发生作用

3 个回复

倒序浏览
没有信号 来自手机 中级黑马 2015-10-17 01:10:22
沙发
那用extern 和static 修饰局部变量都一样了?改变生命周期到程序结束,extern 修饰局部变量不是就是全局了?。我有点晕了+_+
回复 使用道具 举报
{:2_31:}{:2_31:}{:2_31:}{:2_31:}
回复 使用道具 举报
说的号,学习了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马