函数C语言中static变量使用方法

c语言static  时间:2021-02-28  阅读:()

1. static变量

静态变量的类型说明符是static。 静态变量当然是属于静态存储方式但是属于静态存储方式的量不一定就是静态变量。 例如外部变量虽属于静态存储方式但不一定是静态变量必须由static加以定义后才能成为静态外部变量或称静态全局变量。

2.静态局部变量

静态局部变量属于静态存储方式它具有以下特点

(1)静态局部变量在函数内定义它的生存期为整个源程序但是其作用域仍与自动变量相同只能在定义该变量的函数内使用该变量。退出该函数后 尽管该变量还继续存在但不能使用它。

(2)允许对构造类静态局部量赋初值例如数组若未赋以初值则由系统自动赋以0值。

(3)对基本类型的静态局部变量若在说明时未赋以初值则系统自动赋予0值。而对自动变量不赋初值则其值是不定的。 根据静态局部变量的特点 可以看出它是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用但如再次调用定义它的函数时它又可继续使用 而且保存了前次被调用后留下的值。 因此 当多次调用一个函数且要求在调用之间保留某些变量的值时可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的但全局变量有时会造成意外的副作用 因此仍以采用局部静态变量为宜。

3.静态全局变量

全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。全局变量本身就是静态存储方式静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序 当一个源程序由多个源文件组成时非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域 即只在定义该变量的源文件内有效 在同一源程序的其它源文件中不能使用它。 由于静态全局变量的作用域局限于一个源文件内只能为该源文件内的函数公用 因此可以避免在其它源文件中引起错误。从以上分析可以看出把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域限制了它的使用范围。因此static这个说明符在不同的地方所起的作用是不同的。

4. static函数…..

内部函数和外部函数

当一个源程序由多个源文件组成时 语言根据函数能否被其它源文件中的函数调用将函数分为内部函数和外部函数。

1 内部函数又称静态函数

如果在一个源文件中定义的函数只能被本文件中的函数调用而不能被同一程序其它文件中的函数调用这种函数称为内部函数。

定义一个内部函数只需在函数类型前再加一个“static”关键字即可如下所示static函数类型函数名(函数参数表)

{……}

关键字“static”译成中文就是“静态的”所以内部函数又称静态函数。但此处“static”的含义不是指存储方式而是指对函数的作用域仅局限于本文件。

使用内部函数的好处是不同的人编写不同的函数时不用担心自己定义的函数是否会与其它文件中的函数同名 因为同名也没有关系。

2外部函数

外部函数的定义在定义函数时如果没有加关键字“static”或冠以关键字“extern”表示此函数是外部函数

[extern]函数类型函数名(函数参数表)

{……}

调用外部函数时需要对其进行说明

[extern]函数类型函数名(参数类型表)[ 函数名2(参数类型表2)……] 案例]外部函数应用。

1文件mainf.cmain()

{ extern void input(…),proc es s(…),output(…);input(…);proc es s(…);output(…);

}

2文件s ubf 1.c

……extern void input(……)/*定义外部函数*/

{……}

3文件s ubf2.c

……extern void process(……) /*定义外部函数*/

{……}

4文件s ubf3.c

……extern void output(……)/*定义外部函数*/

{……}

提速啦(24元/月)河南BGP云服务器活动 买一年送一年4核 4G 5M

提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...

Sharktech鲨鱼服务器商提供洛杉矶独立服务器促销 不限流量月99美元

Sharktech(鲨鱼服务器商)我们还是比较懂的,有提供独立服务器和高防服务器,而且性价比都还算是不错,而且我们看到有一些主机商的服务器也是走这个商家渠道分销的。这不看到鲨鱼服务器商家洛杉矶独立服务器纷纷促销,不限制流量的独立服务器起步99美元,这个还未曾有过。第一、鲨鱼机房服务器方案洛杉矶机房,默认1Gbps带宽,不限流量,自带5个IPv4,免费60Gbps / 48Mpps DDoS防御。C...

RangCloud19.8元/月,香港cn2云主机,美国西雅图高防云主机28元/月起

rangcloud怎么样?rangcloud是去年年初开办的国人商家,RangCloud是一家以销售NAT起步,后续逐渐开始拓展到VPS及云主机业务,目前有中国香港、美国西雅图、韩国NAT、广州移动、江门移动、镇江BGP、山东联通、山东BGP等机房。目前,RangCloud提供香港CN2线路云服务器,电信走CN2、联通移动直连,云主机采用PCle固态硬盘,19.8元/月起,支持建站使用;美国高防云...

c语言static为你推荐
eset最新用户名密码求ESET Smart Security最新用户名和密码伪静态什么是伪静态ejb开发什么是EJB?mate8价格华为mate8市场价多少二层交换机什么是二层交换机二层交换机二层交换机是什么意思,三层呢Qzongqzong皮肤上怎样写字QzongQZONG怎么玩?微信电话本怎么用如何启用微信通讯录qq等级表谁能告诉我QQ等级列表?
传奇服务器租用 二级域名查询 德国vps 最新代理服务器ip 华为云服务 host1plus pw域名 themeforest 香港机房托管 淘宝双十一2018 网页背景图片 租空间 申请个人网页 百兆独享 cdn加速原理 可外链网盘 爱奇艺会员免费试用 多线空间 shopex主机 安徽双线服务器 更多