您好,欢迎来到99网。
搜索
您的当前位置:首页c语言static什么意思

c语言static什么意思

来源:99网

c语言static是什么意思

Z, ZLW 10302

c语言static意思是静态变量。static指修饰符,可以用来修饰变量,也可以用来修饰函数。如果是在函数外面定义的,那么static说明的变量可以在当前c程序文件中使用。如果是在函数内部定义的,那么这个变量只初始化一次,即使再次调用这个函数,这个static变量也不会再次被初始化。

一、 static概述

Static,顾名思义是静态、静止的意思,个人理解的含义是私有、静态。

私有就是隐藏。

static函数只能声明后的本文中调用
static全局变量只能声明后的本文中调用
static局部变量只能声明后的本函数调用

静态就是一直存在,相对于每次调用动态分配而言。

static函数(未验证是否每次调用代码地址都是一致的)
static全局变量生命周期到程序或进程结束;
static局部变量生命周期到程序或进程结束。

二、static的好处是什么?

隐藏变量或函数、隔离错误,有利于模块化程序

在编程中,难免会用到全局变量,全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,全局变量在所有的源文件中都是有效的。如果希望全局变量仅限于在本源文件中使用,在其他源文件中不能引用,也就是说其作用域只在定义该变量的源文件内有效,而在同一源程序的其他源文件中不能使用,这时,就可以通过在全局变量上加static来实现,使全局变量被定义成一个静态全局变量。这样就可以避免其他源文件使用该变量、避免其他源文件因为该变量引起的错误。起到了对其他源文件隐藏该变量和隔离错误的作用,有利于模块化程序。

保持变量内容的持久性

有时候,我们希望函数中局部变量的值在函数调用结束之后不会消失,仍然保留函数调用结束的值。即它所在的存储单元不释放。这时,应该将该局部变量用关关键字static声明为静态局部变量。当局部变量被声明为静态局部变量的时候,也就改变了局部变量的存储位置,从原来的栈中存放改为静态存储区存放,全局变量也存放在静态存储区,静态局部变量与全局变量的主要区别就在于可见性,静态局部变量只在其被声明的代码块中是可见的。

默认初始化为 0

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

三、static的使用和作用

静态全局变量

使用:全局变量前加static,修饰全局变量为静态全局变量。

作用:改变全局变量的可见性。静态全局变量的存储位置在静态存储区,未被初始化的静态全局变量会被自动初始化为0。静态全局变量在声明它的文件之外是不可见的,仅在从定义该变量的开始位置到文件结尾可见。

静态局部变量

使用:局部变量前加static,修饰局部变量为静态局部变量。

作用:改变局部变量的销毁时期。静态局部变量的作用域和局部变量的作用域一样,当定义它的函数或语句块结束的时候,作用域结束。不同的是,静态局部变量存储在静态存储区,当静态局部变量离开作用域后,并没有被销毁。当该函数再次被调用的时候,该变量的值为上次函数调用结束时的值。

静态函数

使用:函数返回类型前加static,修饰函数为静态函数。

作用:改变函数的可见性。函数的定义和声明在默认情况下都是extern的,但静态函数只在声明它的文件中可见,不能被其他文件使用。

类的静态成员

使用:类成员前加static,修饰类的成员为类的静态成员。

作用:实现多个对象之间的数据共享,并且使用静态成员不会破坏封装性,也保证了安全性。

类的静态函数

使用:类函数前加static,修饰类的函数为静态函数。

作用:减少资源消耗,不需要实例化就可以使用。

回复

我来回复

暂无回复内容


请 登录 或者 注册 后回复。 加强客户关系的策略有哪些 1年前 0 98
研发项目管理的内容是什么 5个月前 0 255
风险应对是什么 12个月前 0 86
怎么选择广东服务器租用 1年前 0 25
电子商务服务器怎么选择 1年前 0 30
使用国内免备案cdn加速有哪些优势 11个月前 0 73
Java里面的JFrame和Frame类的区别是什么 4个月前 0 230
服务器除了免备案还有哪些优势 8个月前 0 36
好用的研发管理工具 5个月前 0 54
什么是CPS推广模式CPS广告是什么意思 1年前 0 274

Copyright © 2019- 99spj.com 版权所有 湘ICP备2022005869号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务