H 第5章程序结构 2.块作用域 块作用域又称局部作用域。当标识符的声眀出现 在由一对花括号“{}"所括起来的程序(块)内时,则 此块中声明的标识符的作用域从声明处开始,一直到 块结束的花括号为止。为了理解块作用域,我们来看 一个例子: #include<iostream. h> void mal int n
第5章 程序结构 2.块作用域 块作用域又称局部作用域。当标识符的声明出现 在由一对花括号“{}”所括起来的程序(块)内时,则 此块中声明的标识符的作用域从声明处开始,一直到 块结束的花括号为止。为了理解块作用域,我们来看 一个例子: #include<iostream.h> void main( ) { int n;
H 第5章程序结构 for(int i=0; 1<5; 1++) Int m if(192) m作用域}i作用域〉n作用域 n++ m=n/2;∥错误,m未定义
第5章 程序结构 for(int i=0;i<5;i++) { int m; if(i%2) m作用域 i作用域 n作用域 n++; } m=n/2; //错误,m未定义 n=i; }
H 第5章程序结构 在这个例子中,函数体main()是一个块,for语句 之后的循环体又是一个较小的块。变量n和i的作用域 从声明处开始,到它所在的块,即整个函数体main() 结束处为止。变量m的作用域从声明处开始到它所在 的块,即循环体结束为止。因此,编译时m=n/2会出错, 因为它试图在m作用域之外引用m。而n=i是允许的, 因为此时还在i的作用域内。如果在上面的程序中加入 一个函数finl(),情况会怎么样呢?
第5章 程序结构 在这个例子中,函数体main( )是一个块,for语句 之后的循环体又是一个较小的块。变量n和i的作用域 从声明处开始,到它所在的块,即整个函数体main( ) 结束处为止。变量m的作用域从声明处开始到它所在 的块,即循环体结束为止。因此,编译时m=n/2会出错, 因为它试图在m作用域之外引用m。而n=i是允许的, 因为此时还在i的作用域内。如果在上面的程序中加入 一个函数fun1( ),情况会怎么样呢?
H 第5章程序结构 #include<iostream. h> void main void fun1() /fun1()函数声明 n for(int 1=0; 1<5; 1++) int m if(192) n++
第5章 程序结构 #include<iostream.h> void main( ) { void fun1( ); //fun1( )函数声明 int n; for(int i=0;i<5;i++) { int m; if(i%2) n++;
第5章程序结构 H m-n ∥错误,m未定义 fun1() /fnl()函数调用 void fun1() cout<<i="<<i<<endl ∥错误,i未定义
第5章 程序结构 } m=n/2; //错误,m未定义 fun1( ); //fun1( )函数调用 n=i; } void fun1( ) { cout<<"i="<<i<<endl; //错误,i未定义 }