C语言static类型变量特点是,c语言static

c语言static[编辑]

概述

static在C语言中是静态存储类型的意思,用static声明的变量在函数调用结束后依然存在,也就是在整个程序中都能用这个变量。

c语言:

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。

特点:

1、C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。

2、C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。

3、不同的变量类型可以用结构体(struct)组合在一起。

4、只有32个保留字(reserved keywords),使变量、函数命名有更多弹性。

5、部份的变量类型可以转换,例如整型和字符型变量。

6、通过指针(pointer),C语言可以容易的对存储器进行低级控制。

7、预编译处理(preprocessor)让C语言的编译更具有弹性。

static:

像在VB,C#,C,C++,Java中我们可以看到static作为关键字和函数出现,在其他的高级计算机语言如FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、PROLOG、Ada等语言中也是有出现的,只是有着不同的作用,对于其具体作用,读者有需要的时候是可以具体查阅的。

c语言static:

static声明的变量在c语言中的特征:

1、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。

2、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。

作用:

1、隐藏:当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。

2、保持变量内容的持久:存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是用来隐藏的。

3、默认初始化为0:其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。比如初始化一个稀疏矩阵,我们可以一个一个地把所有元素都置0,然后把不是0的几个元素赋值。如果定义成静态的,就省去了一开始置0的操作。再比如要把一个字符数组当字符串来用,但又觉得每次在字符数组末尾加’\0’太麻烦。如果把字符串定义成静态的,就省去了这个麻烦,因为那里本来就是’\0’。

总结:首先static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0。

static语句的语法包含的部分:

描述varname必需的。变量的名称;遵循标准变量命名约定。

subscripts可选的。数组变量的维数;最多可以定义60维的多维数组。

如果不显式指定lower,则数组的下界由Option Base语句控制。如果没有Option Base语句则下界为 0。

New可选的。用它可以隐式地创建对象的关键字。如果使用New声明对象变量,则在第一次引用该变量时将新建该对象的实例,因此不必使用Set语句来对该对象引用赋值。New关键字不能用来声明任何内部数据类型的变量,也不能用来声明从属对象的实例。

type 可选的。变量的数据类型;可以是Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(对变长的字符串)、Object、Variant、用户定义类型或对象类型。所声明的每个变量都要有一个单独的 As type 子句。

static函数内部函数和外部函数:

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

内部函数(又称静态函数):如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数称为内部函数。定义一个内部函数,只需在函数类型前再加一个“static”关键字即可。

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

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

与dim语句声明的变量的区别:

static只能在sub或function过程中使用,在退出sub或function过程后变量的值保留;dim使用在sub或function过程中时,退出sub或function过程后变量的值不保留。

注意:

Static语句与Static关键字很相似,但是针对不同的效果来使用的。如果使用 Static 关键字来声明一个过程,则该过程中的所有局部变量的存储空间都只分配一次,且这些变量的值在整个程序运行期间都存在。对非静态过程而言,该过程每次被调用时都要为其变量分配存储空间,当该过程结束时都要释放其变量的存储空间。Static语句则用来在非静态的过程中声明特定的变量,以使其在程序运行期间能保持其值。

在初始化变量时,数值变量被初始化为0,变长的字符串被初始化为一个零长度的字符串,而定长的字符串则用0填充。Variant 变量被初始化为Empty。用户自定义类型的变量的每个元素作为各自独立的变量进行初始化。

如果在过程中使用Static语句,应和其它的声明语句(如Dim)一样将其放在过程的开始。

参考资料: 百度百科

扩展阅读:

相关词条:

合作编辑:

分享到:

更多

网络营销词典内容均由网友提供,仅供参考。如发现词条内容有问题,请发邮件至info # wm23.com。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值