static关键字

本文详细解析了static关键字在C/C++中的应用,包括局部静态变量、外部静态变量、静态函数及静态数据成员和成员函数的特点与作用。探讨了static如何影响变量的可见性和生命周期,以及在成员函数中的特殊行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、static的使用:

C语言:局部静态变量,外部静态变量和外部静态函数

C++:静态数据成员,静态成员函数

2、static修饰变量:

具有隐藏的作用,加static后,变量只能在本文件使用;

会在程序开始运行时就完成初始化,也是唯一一次初始化,且默认初始化为0;

全局变量和static变量存储在静态存储区

3、static修饰函数:

具有隐藏的作用,加static后,函数只能在本文件使用;

4、static修饰数据成员:

成员加上static后就相当于该类域中的全局变量;

被修饰后的数据成员被该类的所有对象共享,包括该类的派生类的对象;

被修饰后的数据成员可以作为某个成员函数的可选参数,但是普通的数据成员不可以;

被修饰后的数据成员的类型可以是所属类的类型,但是普通数据成员只能声明所属类的类型的指针或引用;

Eg:

被修饰后的数据成员在const修饰的成员函数中其值可以被合法的改变;

什么时候使用static?--需要一个数据对象为整个类而非某个对象服务,且对类外不可见时。

5、static修饰成员函数:

static修饰后的成员函数的地址可以用普通函数指针存储,但是普通成员函数的函数地址需要用类成员函数指针存储;

Eg:

static修饰后的成员函数不可以调用类的非静态成员函数,因为静态成员函数中没有this指针(this指针是函数内部指针,静态成员函数在类的实例化创建前就存在了);

6、注意

static在两次调用函数时,第二次调用进入函数会保持第一次调用退出函数时的值,延长了局部变量的生存期(普通局部变量(栈上)函数结束时生存期就结束了)

 

Ps:正在学习ing,若有不对的地方或者建议可以评论^_^。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值