这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » C语言中使用静态函数(static)的好处

共5条 1/1 1 跳转至

C语言中使用静态函数(static)的好处

专家
2014-04-23 16:33:20     打赏

      静态函数会被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多。 

      关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的 作用域仅局限于本文件。 使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关 系。 


全局static变量的初始化在编译的时候进行。在main函数被调用之前初始化,并且,只初始化一次 。

函数static变量在函数中有效,第一次进入函数初始化。以后进入函数将沿用上一次的值。


c语言中static的语义

1.static变量:

        1).局部a.静态局部变量在函数内定义,生存期为整个源程序,但作用域与自动变量相同,只能在定义该 变量的函数内使用。退出该函数后, 尽管该变量还继续存在,但不能使用它。

           b.对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。

        2).全局全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。但是他们的作用域,非静态全局 变量 的作用域是整个源程序(多个源文件可以共同使用); 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中 不能使用它。

2.static函数(也叫内部函数)只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用。区别于一般的非静态函数(外部函 数)     static在c里面可以用来修饰变量,也可以用来修饰函数。         先看用来修饰变量的时候。变量在c里面可分为存在全局数据 区、栈和堆里。其实我们平时所说的堆栈是栈而不包含,不要弄混。




关键词: static     函数    

院士
2014-04-23 19:58:14     打赏
2楼
楼主 居然没有讲解一下 static变量的初始化???

院士
2014-04-23 22:16:43     打赏
3楼

来听听高手们的讨论、讲解,比看书有效一些。


院士
2014-05-08 11:06:30     打赏
4楼
还是书中会系统一些

菜鸟
2014-05-10 13:59:12     打赏
5楼

楼主的第一句话有问题吧?避免出入栈得使用inline。

static对于函数,只是显式的表达了其作用域。

static对于变量,限定了作用域和属性(分配在RAM中的静态变量区),在作用域外是无法通过变量名使用该变量的。


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]