C与C++中static关键字用法比较

最新修改: C\C++ static用法


一、预备知识

按作用域的称谓                                                    按定义位置的称谓

局部变量:在函数内定义的变量           <---->            内部变量

全局变量:函数之外定义的变量           <---->            外部变量

 

变量分类:

|------- 作用域:局部变量;全局变量

|------- 生存周期:动态变量;静态变量

二、相同点(三种作用)

C语言中,static关键字有如下三种作用。这三种作用在C++中也完全适用。

1. 声明静态局部变量

理解:将一个局部变量的生存周期设定为整个应用程序的生存周期。

           但是,这并不影响着它的作用域仍为局部区域。

案例:

在TestStaticLocalVariable()函数中,a为局部变量,又被声明成了static类型。

所以,第一次调用TestStaticLocalVariable()函数时,给a赋初始值1,然后输出2;

第二是调用TestStaticLocalVariable()函数时,会跳过a的定义语句,直接将a++,由于a保存了2,所有++后输出3。

2. 声明静态外部变量

理解:即声明为static类型的外部变量。

           为了使本文件内定义的外部变量,不能被其他文件使用。

         注:外部变量肯定是静态存储(生存周期)的,无论加static与否。

                   但是加上static后,它的作用域就变了。

案例:

(1)新建一个C++ Project,添加一个cpp文件,名为File,其中添加如下代码:

 

(2)在main.cpp文件中,声明外部变量,并试图使用。

可见,编译器将stc报错,而var可以通过。因为,stc被我们声明成了static类型。

 

 

3. 声明内部函数

内部函数:不能被其他文件调用的函数

外部函数:能够被其他文件调用的函数

理解:类似于外部变量。

     为了使本文件定义的函数,不能被其他文件使用。

案例:

 (1)新建一个C++Project,添加一个cpp文件,名为File,其中添加如下代码:

(2)在main.cpp文件中,声明add 和sub两个外部函数,并试图使用。

可见,编译器将add报错,而sub可以通过。因为,add函数被我们声明成了static类型,mian.cpp中是不能使用的。

 

三、不同点(类的成员)

这是C++不同于C的static用法。

1.    类的静态成员变量和静态成员函数

这方面,不多提了



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值