C/C++之static


首先先说一说,在我们的C/C++中若变量或函数被static修饰,变量或函数应在内存的哪个区,若是变量,则将变量放在内存的全局区,若是函数,则将函数放在内存的代码区。

放在全局区说明了,该变量或函数的生存期是在整个函数运行完成之后。

在C++中,我们用static修饰函数,意味着这个函数将没有隐藏的this指针,我们每次调用时,只需要传这个函数所涉及的参数即可,一旦一个函数被static所修饰,没有this指针,说明这个函数和该对象的成员没有关系,其功能就是一个记录事实的东西,那反过来若一个函数有this指针,则说明在这个函数中我们所做的操作该对象的成员是有关的,即判断一个函数能否被static修饰,根据这个判断就可以了。

还有,若一个函数被static修饰,则会改变这个函数的链接属性。

何为链接属性?

答:指的是我们的程序编译好在链接时,只会在该程序所在的当前目录的定义这个函数的文件里去找这个函数,而不会在其它的文件里去找,这就是我们所说的链接属性,那与static相对的是关键字voliatle,它修饰函数时,说明这个函数不在你当前目录中所写的文件里定义,在当前目录的其它文件里定义,所以在链接时,就会在当前目录的其它文件里找该函数。



猜你喜欢

转载自blog.csdn.net/weixin_40797414/article/details/80964231