有关变量的知识点学习
来源:互联网 发布:网络教师招聘 编辑:程序博客网 时间:2024/05/22 05:18
1、全局变量和静态变量的异同
全局变量的作用域是整个程序,它只需在一个源文件中定义,就可以作用于所有的源文件,其他不包含全局变量定义的源文件需要用extern关键字再次声明这个全局变量。若某一个局部变量重新定义了这个全局变量,则全局变量作用域是除了这个局部外的整个程序,它的生命期与整个程序的生命期一样长。
全局变量、静态全局变量、静态局部变量都在静态存储区分配空间,生命期与程序生命期相同,不同点在于全局变量具有全局作用域,静态变量具有稳健作用域。
静态局部变量具有局部作用域,只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在。静态局部变量只对定义自己的函数体始终可见。
静态全局变量也具有全局作用域,被static关键字修饰过的静态全局变量具有文件作用域,即使两个不同的源文件都定义了相同名字的静态全局变量,他们也是不同的变量。
局部变量在栈上分配空间。
把局部变量改变成静态局部变量后改变的是它的存储方式,即改变了它的生命期。把全局变量改变成静态全局变量后改变的是它的作用域,限制了它的使用范围。
#include<stdio.h>static int j;int k=0;int m;void fun1(){ static int i=0; i++; m=i;}void fun2(){ j=0; //如果没有此行的初始化,j最后的值也会变成10 j++;}int main(){ for(k=0;k<10;k++) { fun1(); fun2{}; } printf("%d\n",m); printf("%d\n",j); return 0;}//程序输出结果为://10//1
i为静态局部变量,只能被初始化一次,j在此程序中是全局变量,每次函数调用的时候都会被初始化。
2、局部变量需要“避讳”全局变量吗?
局部变量可以与全局变量重名,但是局部变量会屏蔽全局变量。在函数体内引用变量会用到同名的局部变量,而不会使用到全局变量。
全局变量与局部变量区别如下:
(1)作用域:全局变量作用域是程序块,局部变量是当前函数
(2)存储方式:全局变量分配在全局数据区,局部变量在栈区
(3)生命周期:全局变量生命期与程序生命期一样长,局部变量生命期与当前函数一样长
(4)使用方式:局部变量只能在局部使用
需要注意的是,局部变量不能赋值为同名全局变量。
3、变量的定义与变量的声明
- 有关变量的知识点学习
- linux 变量有关知识点
- 有关session的知识点
- 有关线程的知识点
- 有关ConvertRect的知识点
- 有关XML的知识点
- jsp的有关知识点
- 有关camshift的知识点
- 有关树的知识点
- 有关常量的知识点
- 有关数组的知识点
- 有关Fragment的知识点
- 【学习日记】有关java的IO的知识点总结
- iOS学习中有关的oc中的所有的知识点
- 学习的知识点-有关计算机网络安全方面的
- 视频协议有关知识点学习
- 【C++再学习】【05】有关类的一些知识点整理
- C++中有关的复合类型变量的知识点的一些见解
- 简读The Swift Programming Language官方文档--方法 Methods
- Android Circular Progress Button
- mac 上第一个openGL
- 正则表达式(regexp)
- Android ART简介
- 有关变量的知识点学习
- 简读The Swift Programming Language官方文档--下标脚本 Subscripts
- cocos2dx-3.x中如何在update中传入多个参数(利用std::bind实现)
- ArcEngine修改字段名称
- Git简单介绍(一)
- Java---字节输入,文件操作,病毒制造,请谨慎运行!
- 什么是版本管理
- 关于python刷题的语法要点
- springmvc4.1+hibernate和jackson2.5的配置