C语言的static关键字的理解


static最主要的作用是:隐藏
  当我们同时编译多个源文件时,所有未加static前缀的全局变量和函数都具有全局可见性

,就是都是对外可见以及调用的。
  如果加了static,就会对其它源文件隐藏,只对本身文件可见,利用这一特性可以在不同

的文件中定义同名函数和同名变量,而不必担心命名冲突。Static可以用作函数和变量的前缀

,对于函数来讲,static的作用仅限于隐藏,而对于变量,static还有下面两个作用。
   static的第二个作用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运

行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和

static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是

用来隐藏的。
   static的第三个作用是默认初始化为0。其实全局变量也具备这一属性,因为全局变量也

存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可

以减少程序员的工作量。比如初始化一个稀疏矩阵,我们可以一个一个地把所有元素都置0,然

后把不是0的几个元素赋值。如果定义成静态的,就省去了一开始置0的操作。再比如要把一个

字符数组当字符串来用,但又觉得每次在字符数组末尾加’/0’太麻烦。如果把字符串定义成

静态的,就省去了这个麻烦
  最后对static的三条作用做一句话总结。首先static的最主要功能是隐藏,其次因为

static变量存放在静态存储区,所以它具备持久性和默认值0。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: staticC语言的一种关键字,它可以作为函数或变量的修饰符,具有不同的作用。 1. 作为函数修饰符 当static修饰函数时,这个函数就被限制在声明它的文件,不能被其他文件所用。这种函数被称为静态函数。静态函数的作用主要有两个:一是避免与其他文件的函数同名,二是隐藏函数的实现细节,只暴露接口供其他函数调用。 2. 作为变量修饰符 当static修饰变量时,这个变量就成为静态变量,只在定义它的源文件可见,其他文件无法访问。静态变量的作用主要有两个:一是避免与其他文件的同名变量冲突,二是保持变量的值在函数调用之间持久不变。 在函数内部使用static修饰的变量称为局部静态变量,它的生命周期与程序的生命周期相同,只初始化一次,下次调用时保留上次的值。局部静态变量的作用主要是为了保留函数状态,避免在函数调用时反复初始化变量,提高程序的效率。 在全局变量使用static修饰的变量称为静态全局变量,它只在定义它的文件可见,其他文件无法访问。静态全局变量的作用主要是限制变量的作用域,避免在其他文件被意外修改,提高程序的可靠性。 ### 回答2: static关键字在程序主要有以下作用: 1.静态变量:使用static关键字声明的变量是静态变量,它的生命周期与程序的生命周期相同,即在程序开始运行时创建,在程序结束时销毁。静态变量是在类的所有对象之间共享的,每个对象对该变量的修改都会影响其他对象的访问。可以通过类名直接访问静态变量,无需创建对象。 2.静态方法:使用static关键字声明的方法是静态方法,它不依赖于任何对象的创建。可以通过类名直接调用静态方法,无需创建对象。静态方法只能访问静态变量和调用其他静态方法,无法访问非静态成员。 3.静态块:使用static关键字声明的代码块是静态块,它在类加载时(即第一次使用类时)执行,用于初始化静态变量和执行其他静态操作。静态块可以有多个,按照它们在类的顺序执行。静态块的执行顺序优先于类的构造函数。 4.静态导入:使用static关键字可以导入一个类的静态成员,使得在使用时无需使用类名或对象名前缀。静态导入功能主要用于简化代码的书写,但过多的静态导入可能会导致代码难以阅读和理解。 总的来说,static关键字的作用是使变量和方法具有全局共享的特性,通过静态方式访问和调用,简化了代码的书写,并且可以在类加载时执行特定的初始化操作。但是需要注意合理使用静态成员,避免滥用,以免引起不必要的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值