C语言中static,extern修饰符说明

来源:互联网 发布:服务器交换机端口号 编辑:程序博客网 时间:2024/06/05 07:33

C语言中关于static,extern 修饰符的说明

有关static的说明:

C程序段一直由下列几个部分构成:

1)正文段,主要指CPU执行的机器指令部分;

2)初始化数据段

3)非初始化数据段

4)栈

5)堆-动态存储区


在全局变量前加上static,说明全局变量是一个静态全局变量,静态全局变量会被放在叫做静态存储区的内存中,且根据其类型自动进行初始化,而且静态全局变量的作用域范围只是在其定义所在的文件中有效,对其他文件是不可见的,也就意味着,在其他文件中可以定义和相同名称的变量,并不会产生重复定义的语法错误,而且能够防止被其他文件修改的危险。

而局部静态变量也被存放在静态存储区的内存中,但是其作用域范围则是在其定义的语句块开始到语句块结束,但是当语句块结束时并不意味着局部静态变量被销毁,而是继续存在于静态存储区中,只是无法被访问而已。


静态函数

C语言中函数被默认定义成extern的,但是静态函数只在其定义的文件中可见,在其他文件则是不可见的,不能被其他文件使用。

静态函数被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈和出栈,提高了函数调用的效率。

关键字"static"被译成是静态的意思,所以内部函数又称静态函数,但是此处的"static"的含义并不是指存储方式,而是指对函数的作用域局限于其定义文件,其带来的好处也显而易见,在其他文件中可以定义相同名称的函数。


extern用来申明函数时,当期被使用时告诉编译器函数在其他文件中被申明。

原创粉丝点击