static使用总结

来源:互联网 发布:下列网络系统安全原则 编辑:程序博客网 时间:2024/06/06 08:25

static使用总结

1.       关键字static有三个明显的作用:
A、在函数体,静态的变量在这一函数被调用过程中维持其值不变。
B、在模块内(但在函数体外),静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
C、在模块内,静态的函数只可被这一模块内的其它函数调用。

2.       常见的两种用途: 1>统计函数被调用的次数; 2>减少局部数组建立和赋值的开销.变量的建立和赋值是需要一定的处理器开销的,特别是数组等含有较多元素的存储类型。

3.       详细说明:
A、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。
B、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。
C、当static用来修饰全局变量时,它就改变了全局变量的作用域,使其不能被别的程序extern,限制在了当前文件里,但是没有改变其存放位置,还是在全局静态储存区。

4.       静态局部变量:在局部变量前加上static关键字时,就定义了静态局部变量。
A、该变量在全局数据区分配内存。
B、初始化:如果不显式初始化,那么将被隐式初始化为0。
C、它始终驻留在全局数据区,直到程序运行结束。

5.       静态全局变量:在全局变量前,加上关键字 static定义成为了一个静态全局变量。
A、该变量在全局数据区分配内存。
B、初始化:如果不显式初始化,那么将被隐式初始化为0。
C、访变量只在本源文件可见,严格的讲应该为定义之处开始到本文件结束。
D、文件作用域下声明的const的常量默认为static存储类型。

6.       使用注意:
A、若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;
B、若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;
C、设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题(只要输入数据相同就应产生相同的输出)。

原创粉丝点击