static变量和static函数的用法摘抄

上传人:飞*** 文档编号:47847716 上传时间:2018-07-05 格式:PDF 页数:3 大小:5.03KB
返回 下载 相关 举报
static变量和static函数的用法摘抄_第1页
第1页 / 共3页
static变量和static函数的用法摘抄_第2页
第2页 / 共3页
static变量和static函数的用法摘抄_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《static变量和static函数的用法摘抄》由会员分享,可在线阅读,更多相关《static变量和static函数的用法摘抄(3页珍藏版)》请在金锄头文库上搜索。

1、一、 static 变量1. 静态局部变量 静态局部变量属于静态存储方式,它具有以下特点: (1) 静态局部变量在函数内定义它的生存期为整个源程序,但是其作用域仍 与自动变量相同, 只能在定义该变量的函数内使用该变量。退出该函数后,尽 管该变量还继续存在,但不能使用它。(2) 允许对构造类静态局部量赋初值例如数组,若未赋以初值,则由系统自 动赋以 0 值。 (3) 对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0 值。 而对自动变量不赋初值, 则其值是不定的。根据静态局部变量的特点,可以看 出它是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如 再次调用定义它的函

2、数时,它又可继续使用,而且保存了前次被调用后留下的 值。举例如下: int fun() static int a = 1; a+; 在第一次进入这个函数的时候,变量a 被初始化为 1!并接着自增 1,以后每次 进入该函数, a 就不会被再次初始化了,仅进行自增1 的操作2.静态全局变量 全局变量 (外部变量 )的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变

3、量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。因此static 这个说明符在不同的地方所起的作用是不同的。静态全局变量的作用:(a)不必担心其它源文件使用相同变量名,彼此相互独立。(b)在某源文件中定义的静态全局变量不能被其他源文件使用或修改。 3.static的类成员变量static关键字有

4、两种意思 , 你看上下文来判断a, 表示变量是静态存储变量,表示变量存放在静态存储区. b, 表示该变量是内部连接 (这种情况是指该变量不在任何 之内, 就象全局变量 那样, 这时候加上 static),也就是说在其它的 .cpp 文件中 , 该变量是不可见的 ( 你不能用 ). 二、static 函数 内部函数和外部函数当一个源程序由多个源文件组成时, 语言根据函数能否被其它源文件中的函数 调用,将函数分为内部函数和外部函数。 1 内部函数(又称静态函数) 如果在一个源文件中定义的函数,只能被本文件中的函数调用, 而不能被同一程 序其它文件中的函数调用,这种函数称为内部函数。 定义一个内部函

5、数, 只需在函数类型前再加一个“static”关键字即可, 如下所 示: static 函数类型函数名 (函数参数表 ) , 关键字“ static”,译成中文就是“静态的”, 所以内部函数又称静态函数。但 此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文 件。 使用内部函数的好处是: 不同的人编写不同的函数时, 不用担心自己定义的函数, 是否会与其它文件中的函数同名,因为同名也没有关系。2 外部函数 外部函数的定义: 在定义函数时, 如果没有加关键字“ static”,或冠以关键字 “extern ”,表示此函数是外部函数: extern 函数类型函数名 ( 函数参

6、数表 ) , 调用外部函数时,需要对其进行说明: extern 函数类型函数名 ( 参数类型表 ) ,函数名 2(参数类型表 2),; 案例 外部函数应用。 (1)文件 mainf.c main() extern void input(,),process(,),output(,); input(,);process(,);output(,); (2)文件 subf1.c , extern void input(,) /*定义外部函数 */ , (3)文件 subf2.c , extern void process(,) /*定义外部函数 */ , (4)文件 subf3.c , extern void output(,) /*定义外部函数 */ ,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号