- 6
- 0
- 约1.84万字
- 约 87页
- 2017-06-19 发布于湖北
- 举报
* * * * * * * * * * * * * * #includeiostream.h int i(5); //外部变量,不需extern static int j(6); //外部静态变量 void min(int x,int y ) //形参 { int i(3); //自动变量 auto register int j(2); //寄存器变量 static int k(1); //内部静态变量 … } void main( ) {… } 局部变量 全局变量 蓝色为文件作用域 绿色为函数作用域 注意:同名时是局部优先 1.程序的内存区域 代码区:存放程序的代码,即程序中的各个函数代码块。 全局数据区:存放程序的全局数据和静态数据。 堆区:存放程序的动态数据。 栈区:存放程序的局部数据,即各个函数中的数据。 2.外部变量(全局变量 ) 在函数外边访问的变量被认为是全局变量,并在程序的每个函数中是可见的。 int n=5; //全局变量,如果未初始化,为0 void main() { int m=n; //... } void func() { int s; s=n; //... } 全局变量在主函数main()运行之前就开始存在了。所以主函数中可以访问n变量。全局变量通常在程序顶部定义。全局变量一旦定义后就在程序的任何地方可知。可以在程序中间的任何地方定义全局变量,但要在任何函数之外。全局变量定义之前的所有函数定义,不会知道该变量。例如: void main( ) { int m=n; //error:n无定义 //... } int n;//全局变量 void func() { int s=3; n=s; //... } 在函数内部定义的变量仅在该函数内是可见的。另外,局部变量的类型修饰是auto,表示该变量在栈中分配空间,但习惯上都省略auto。 例如: void main() { int n; //等价于auto int n; //... } void func() { int n; //... } 两个不同的变量 局部变量 函数中的局部变量存放在栈区。在函数开始运行时,局部变量在栈区被分配空间,函数退出时,局部变量随之消失。 #include iostream.h int func1( ); int func2( ); void main( ) { cout func1( ); cout func2( ) endl; } int func1( ) { int n=12345; return n; } int func2( ) { int m; return m; } 局部变量未初始化,结果不可知 5.4 内部静态变量 static 在局部变量前加上“static”关键字,就成了静态局部变量。静态局部变量存放在内存的全局数据区。函数结束时,静态局部变量不会消失,每次该函数调用时,也不会为其重新分配空间。它始终驻留在全局数据区,直到程序运行结束。 静态局部变量的初始化与全局变量类似.如果不为其显式初始化,则C++自动为其初始化为0。而(动态)局部变量没有初始化时则其值为不可知. 静态局部变量与全局变量共享全局数据区,但静态局部变量只在定义它的函数中可见。 #include iostream.h int f( ) { static int c=3; c++; return (c); } void main( ) { coutf( ); //输出4 coutf( ); //输出5, 第2次调用时c保留了上一次的值4 } #include iostream.h void func( );int n=1; //全局变量 void main() {static int a; // 静态局部变量int b= -10; // 局部变量cout “a:” a “ b:”
您可能关注的文档
最近下载
- 传统基材润湿流平(氟碳硅烷嵌段).pdf VIP
- 南京财经大学2024-2025学年第1学期《高等数学(上)》期末考试试卷(B卷)附参考答案.pdf
- C4D课程考试试题及参考答案.doc VIP
- 2025年陕西公务员申论考试真题及答案B卷.docx VIP
- [渝粤教育] 西北工业大学 航天器控制原理 mooc 资料.docx VIP
- 航天器控制原理(西北工业大学)中国大学MOOC 慕课 章节测验 期末考试答案.pdf VIP
- 精品解析:2025年陕西省中考数学试题(原卷版).docx VIP
- 四维度主力跟踪.pdf
- 2022年陕西省中考数学真题(原卷版).docx VIP
- 大众网关控制器和bcm车身控制模块针脚定义非常有用.pdf VIP
原创力文档

文档评论(0)