网上所说的
C语言中使用静态函数的好处:
静态函数会被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多。
我不理解的是这句“静态函数会被自动分配在一个一直使用的存储区,所以能避免调用函数时压栈出栈。”
为什么会是这样,难道在调用静态函数时就不用把调用函数的参数、调用函数返回地址和调用函数栈低指针进栈了?
经过多方查证其实正确的说法是这样,c中函数加上static关键字只是把函数的作用域限制在当前文件中,而要想减少函数调用时的堆栈开销的话就得在满足一定条件的前提下加上inline关键字
----------------update--------------------
最近看了一本书总算把这问题彻底搞明白了,那本书是从汇编的角度说的
那句话其实说的是 局部静态变量 局部静态变量 在编译的时候是会放进数据区而不进栈的。静态函数不存在什么单独开辟内存之说,静态函数所做的只是在汇编的时候把.globe符号给去掉了使得静态函数只在当前的文件中生效。
其实正确的说法是这样,c中函数加上static关键字只是把函数的作用域限制在当前文件中,而要想减少函数调用时的堆栈开销的话就得在满足一定条件的前提下加上inline关键字
你这个是错的
静态函数不存在什么单独开辟内存之说,静态函数的参数依然要进栈,静态函数所做的只是在汇编的时候把函数默认的.globe符号给去掉了使得静态函数只在当前的文件中生效。
我都说了不是c++的静态方法