static在C和C++中的区别

 static是一个用来修饰变量函数的关键字。

在C中:

1、修饰全局变量

    》 在函数外部使用static修饰全局变量时,该变量的作用域只在声明它的源文件内,对其他源文件是不可见的(其他文件可以定义相同名字的变量)。

    》 static全局变量的生命周期始终延长到程序结束,所以它的存储是静态的。

2、修饰局部变量

    》 static局部变量的作用域是局部的,只在定义它的块内可见。

    》 与普通局部变量相比,static局部变量只会被初始化一次,下次调用函数时保留上次的值。

    》 static修饰局部变量时生命周期会延长到整个程序执行过程中,而不是只在函数执行期间。

3、修饰函数

    》 使用static修饰函数时,表示该函数的链接属性为内部链接,该函数只能在源文件中使用,对于其他文件是不可见的。

    》 使用static修饰函数可以防止函数的重名冲突(其他文件可以定义相同名字的函数)。

在C++中:

static在C++中的用法与C中相同,除此之外还有一些额外的用法。

1、修饰类的成员变量

    》 在类中static修饰的成员变量被称为静态成员变量,它被所有类的对象所共享,所有对象共享一份静态成员变量的内存空间。

    》 静态成员变量在类的所有对象之间是唯一的,可以通过类名来访问,而无需创建对象。

    》 静态成员变量的生命周期与程序的生命周期相同,从程序开始到结束。

    》 类内声明,类外初始化。

2、修饰类的成员函数

    》 在类中使用static修饰的成员函数被称为静态成员函数,它与类的对象无关,可以直接通过类名调用,不需要创建对象。

    》 静态成员函数只能访问静态成员变量和其他静态成员函数,不能直接访问非静态成员变量和非静态成员函数。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值