C++第6篇函数.pptVIP

  • 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:”

文档评论(0)

1亿VIP精品文档

相关文档