static关键字分析

static关键字在C/C++中含义

我们经常可以看到在一些语言之中static作为关键字和函数出现,只是在不同的语言中其有着不同的作用,今天我们就来分析一下static在C/C++中的具体作用。

- C语言中

static在C语言中主要有两个作用,如下:
1、局部静态变量
static修饰局部变量,被修饰的变量成为局部静态变量,其保存在内存的静态存储区,默认具有初始值,为0或空。
2、外部静态变量/函数
static第二个作用就是修饰全局变量或函数,保证全局变量和函数其作用域只在本文件内,不能被其他文件引用。
需要注意的是,对于全局变量,其本身的存储区域就是在静态存储区,生存周期都是全局的,而static的作用是限制了全局变量的作用域,即其只可在本文件内部被调用。

静态存储区:内存在程序编译的时候就已经分配好,并且一直保存不会释放,其直到程序运行结束才会被释放。一般静态存储区存储 常量、静态变量、全局变量等。

- C++中

static在C++中的作用也有两重。
1、修饰静态数据成员
在类中的成员前加上static,其就变为了静态数据成员。
1)在C++中当用static在修饰了变量,其在定义的时候不要在头文件中。因为在头文件中进行的初始化,极有可能引起重复定义,从而导致程序出错。
2)静态数据成员被该类的所有对象所共享,包括派生类对象。
3)静态数据成员可以定义为该类类型,而其他成员则不可以,只可以定义为该类的指针或引用。
4)静态数据成员可以成为类中函数的可选参数,普通数据成员则不可以。
5)需要注意的一点是,静态数据成员在const成员函数中可以被合法的改变。其值会发生确定的变化。
2、静态成员函数
当static修饰函数时,其具有的特点如下所示:
1)静态成员函数不可以调用类中的非静态成员,因为非静态成员不含有this指针。
2)声明为静态成员函数,不可以同时声明为 const、virtual、volatile函数,会产生错误
3)静态成员函数的地址可以用普通的函数指针进行存储,而普通的成员函数则需要用类成员的函数指针进行存储。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值