static、全局、局部
来源:互联网 发布:阿里云域名优惠 2017 编辑:程序博客网 时间:2024/05/22 11:56
1、所有的全局变量都是静态变量,而局部变量只有定义时加上类型修饰符static,才为局部静态变量
2、函数体内如果在定义静态变量的同时进行了初始化,则以后程序不再进行初始化操作(出现在函数内部的基本类型的的静态变量初始化语句只有在第一次调用才执行)。而对自动变量赋初值是在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。
3、静态局部变量的初始化表达式必须是一个常量或者常量表达式。即使局部静态变量定义时没有赋初值,系统会自动赋初值0(对数值型变量)或空字符(对字符变量);静态变量的初始值为0。而对自动变量auto来说,如果不赋初值则它的值将是个不确定的值。
4、局部静态变量占用内存时间较长,并且可读性差,因此,除非必要,尽量避免使用局部静态变量
5、非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的
6、静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它
7、把局部变量改变为静态变量后是改变了它的存储方式,即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。
8、static静态变量会被放在程序的全局存储区中(即在程序的全局数据区,而不是在堆栈中分配,所以不会导致堆栈溢出),这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。
9、PHP里面只有全局作用域和函数作用域,没有块作用域
10、3个变量是不相互影响
<?phpinclude 'ChromePhp.php';$age=0;$age++;function test1() {static $age = 100;$age++;ChromePhp::log($age); //output 101}function test2() {static $age = 1000;$age++;ChromePhp::log($age); //output 1001}test1();test2();ChromePhp::log($age); //outpuut 1?>
0 0
- static、全局、局部
- 局部对象,static局部对象,static全局对象
- 有关static的全局变量、局部变量,全局函数、局部函数
- static全局、局部变量,全局变量及局部变量
- static全局(局部)变量与普通的全局(局部)变量的区别
- static与全局与局部变量的区别
- static与全局与局部变量的区别
- static与全局与局部变量的区别
- static变量与全局、局部变量的区别
- 全局和局部静态变量(static)解析
- static变量与全局、局部变量的区别
- static变量与全局、局部变量的区别
- static变量与全局、局部变量的区别 !
- iOS中 static变量与全局、局部变量的区别 !
- static静态变量(静态全局和静态局部)
- PHP static局部静态变量和全局静态变量总结
- Static与全局与局部变量的区别
- PHP static局部静态变量和全局静态变量总结
- 黑马程序员——IO总结
- Shell 学习10 - Shell 注释
- PHP var_export 与 var_dump
- Java自定义注解的使用
- iBatis开发详解(4)-----------select详解
- static、全局、局部
- hdu5321 beautiful set 莫比乌斯反演
- Git常用的命令
- myFFDrop源代码(VB.NET)
- 楼教主男人八题 POJ 1741(树分治(我自然是看题解搞懂的))
- dhtmlx-calendar
- Sublime Text3 Theme Glacier 高清修改版
- Readactor: Practical Code Randomization Resilient to Memory Disclosure阅读笔记(二)
- 基于Ios的简单点名器程序