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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 阳光地带 中级黑马   /  2014-7-21 02:28  /  1388 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.保持局部变量的持久。
函数内的局部变量,在函数退出后消失,但静态局部变量虽然在函数内定义,但是始终存在。

2.会默认将变量初始化为0.

static还有其他作用吗?

3 个回复

倒序浏览
static 表示内部的意思,extern表示外部的,跟java中不一样,这要区分,static修饰的变量只能被内部访问,同一个变量被static和extern修饰,他们的作用域是一样的,但是生命周期不一样,这个很重要
回复 使用道具 举报
火拳 发表于 2014-7-21 09:39
static 表示内部的意思,extern表示外部的,跟java中不一样,这要区分,static修饰的变量只能被内部访问, ...

内部的意思是同一个文件内吗?static变量的生命周期是一直到程序结束,extern变量呢?
回复 使用道具 举报
1>在函数体内,一个被申明为静态的变量,那么在这个函数的被调用过程中其值只有在第一次定义被申明,以后调用的话,申明会被忽略,所以也就不会因为函数被多次调用,而新的static变量覆盖旧的static变量;而且static修饰的变量的作用域不想其局部变量一样,在函数退出后被系统释放,而是等到整个程序执行完成,退出main函数后才会释放。所以在函数内定义的static变量在整个被调用过程当中,可以保持变量值维持不变。
2>在函数模块内(但在函数体外),一个被申明为static的变量。该变量就可以在整个模块内被模块内的所有函数方法调用。可以理解为一个本地全局变量。
3>在一个模块内,将一个函数声明为static后,那么这个函数就只能在这个模块内被任意调用。类似于我们OC当中的私有函数,有利于功能的封装。了解过Linux设备驱动开发的话,你会发现这种用有多常见。


就知道这么点。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马