【转】C语言中的static变量 和 C++…
来源:互联网 发布:网络主播灯光摆放图 编辑:程序博客网 时间:2024/06/05 07:32
C语言中static的变量:
1).static局部变量
2).static全局变量
关于C语言static变量的理解:
A、若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;
B、若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;
C、静态变量和全局变量放在程序的全局数据区,而不是在堆栈中分配,所以不可能导致堆栈溢出;
D、设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题;
C++语言中static的变量:
1).static局部变量
A、static成员变量设置初值的时候,不受任何权限的束缚。但是这里需要解释的是,并不是在任何时候都不受束缚,仅仅在赋初始值的时候不受权限束缚,如果是在中途改变static成员变量的值的话,必须是public类型的才能改变,否则编译错误。
这个static变量在初始化后,生存期为整个程序运行期间,该静态成员被类的所有对象所共享。即在内存中对所有的对象,只有一份。
例如:对配置文件的类,我们可以在里面定义一个它自身的静态成员对象指针。
这样,当我们要使用配置时,只用获取这个指针,就可以进行具体操作。
2).static全局变量
A、C++中的全局静态变量和C语言中的全局静态变量作用相同。C++中关于静态成员的几点约束::
在const成员函数中,可以修改static成员变量的值。普通成员变量的值,是不能修改的。
从汇编语言的角度上看,static关键字就是把变量放入数据段中存储,而不是放入栈中。
所谓放入数据段中存储,意思就是只要你的程序没有退出,他就一直留在那里,保持上一次的值。
而放入栈中,则有可能因为函数的出栈等操作而被“干掉”(就算你的程序没有退出,他一样可能消失)。
- 【转】C语言中的static变量 和 C++…
- C++ 类的const常量,Static变量和…
- C++ static、const和static…
- 【C语言】17 static和extern…
- 【C语言】18 static和extern-…
- C语言 side effect 和 sequence po…
- C语言中的static变量 和 C++中static变量
- C++ static、const和static&n…
- C语言 linux信号和阻塞 sigaction…
- c++ static
- C语言中的static变量
- C# StreamReader 和 StreamWriter …
- 【Objective-C 语言】1 …
- 【Objective-C 语言】2 …
- 【Objective-C 语言】3 …
- 【Objective-C 语言】4 …
- 【Objective-C 语言】5 …
- 【Objective-C 语言】6 …
- elasticsearch的hadoop插件使用
- 【转】Linux C语言头文件搜索路径
- 转载 瑜伽清肠术
- 如何正确选择飞秒激光手术医…
- 【转】gcc 编译链接库存在顺序问题…
- 【转】C语言中的static变量 和 C++…
- c程序的内存分布
- [基础]NSString与NSMutableString字符串操作:增、删、改字符串
- static变量特点介绍
- linux下磁盘格式化操作
- 基于libmad编写mp3解码程序
- Linux声卡录音程序之——wav
- Linux声卡录音程序之——mp3
- Failed to load session “ubuntu”的解决办法