static的三种作用

文章讨论了在C/C++编程中,静态修饰符如何影响局部和全局变量的行为。静态变量使变量的存储位置改变,其作用域和生命周期延长。同时提到,静态全局变量对其他文件的访问具有限制性。
摘要由CSDN通过智能技术生成

1 修饰局部变量

加入static之后,程序执行第一个函数之后,a会被记忆,此时a为2;

接着进行一次while循坏,又执行第一个函数,此时因为有static,a的值被记忆,a为2,执行a++,a变为3,

以此类推,

如果把void test里的static去掉,打印结果是十个2;

因为程序执行第一个函数,a为1,执行a++,此时a为2,然后执行while循坏,因为没有static,此时a没有被记忆,所以说进入void test()后a还是1,执行a++。........

总之,加入static之后改变了他的储存位置,变量的作用域和生命周期会延长。

2修饰全局变量

两个文件中,若其中一个文件需要另一个文件中的某个值或者函数,用extern 声明一下即可,

此时若另一文件该值被static修饰,则其他文件无法调运该值,

(理解的话,就是static修饰全局变量比较霸道,它一出现,这东西就归他,其他人不能借)

3修饰函数

和咋们全局变量非常的相似啊(看全局变量理解就行,照葫芦画瓢),霸道哥!

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在C++中,static关键字有三种用法: 1. 静态局部变量:在函数内部定义的变量,但生命周期不随函数调用的结束而结束,而是在整个程序运行期间一直存在。这种变量只初始化一次,之后每次调用函数时都不会重新初始化。 2. 静态全局变量:定义在函数外部的变量,并在变量名前加上static关键字。该变量只能在定义该变量的文件中访问,其他文件无法访问。 3. 静态成员变量:在类中定义的静态变量,是所有该类对象所共享的。这种变量只初始化一次,之后所有对象都共享改变量。可以通过类名或者对象名来访问。 ### 回答2: static关键字是用来修饰类的成员(变量或方法)的,它的作用有以下三个方面。 首先,static关键字可以用来修饰静态变量。静态变量是在类加载时就被初始化,在整个程序运行期间都存在,并且所有对象共享同一份静态变量的副本。使用静态变量可以在不创建对象的情况下直接访问变量,节省了内存空间。 其次,static关键字还可以用来修饰静态方法。静态方法是属于整个类的,而不是属于某个对象的。静态方法可以直接通过类名来访问,不需要通过对象来调用。在静态方法中只能直接访问静态成员,而不能直接访问非静态成员。 最后,static关键字还可以用来修饰静态代码块。静态代码块是在类被加载时执行的一段代码,它可以用来初始化静态变量或进行其他一次性的静态初始化操作。静态代码块只会执行一次,多个对象共享同一份静态代码块的执行结果。 综上所述,static关键字的作用在于: 1. 修饰静态变量,使其只占用一份内存空间,并且可以在不创建对象的情况下直接访问。 2. 修饰静态方法,使其属于整个类,并且可以通过类名直接访问。 3. 修饰静态代码块,用于进行静态成员的一次性初始化操作。 ### 回答3: static关键字有以下几个作用: 1. 实现数据的共享:在C++中,static关键字可以用于定义静态成员变量。静态成员变量在类的所有对象中是共享的,它们不属于任何特定的对象,而是属于整个类。这意味着,无论创建了多少个类的对象,静态成员变量的存储空间只有一份。这样可以节省空间,并使所有对象可以共享这些数据。 2. 限制函数的访问:在C++中,static关键字也可以用于修饰类的成员函数,使其成为静态成员函数。静态成员函数不依赖于任何特定的对象,可以直接通过类名访问。这种方式使得静态成员函数可以在没有创建类对象的情况下被调用。因此,静态成员函数不能直接访问非静态成员变量,只能访问静态成员变量和其他静态成员函数。 3. 作用域的限制:在C或C++语言中,static关键字还可以用于定义局部变量或函数。当static修饰局部变量时,它的作用域仅限于定义它的代码块,但它的生命周期会延长到整个程序运行期间。当static修饰函数时,它的作用域也仅限于定义它的文件,其他文件无法访问该函数。这种方式可以实现信息的封装和隐藏,提高代码的安全性和可维护性。 总结起来,static关键字的作用有:实现数据的共享、限制函数的访问和作用域的限制。通过使用static关键字,可以更好地管理和控制程序中的变量和函数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值