C++面向对象程序设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 局部变量声明

在C语言中,局部变量应该在函数的可执行语句之前定义;但在C++中,变量可在任何语句位置定义,只要允许出现程序语句的地方,都允许定义变量。程序Eg2-1.cpp在C语言中是错误的,原因是变量定义语句L3出现在了可执行语句L2的后面。但此程序在C++中却是正确的。

例2-1】 下面的程序在C语言中存在编译问题,但在C++中是正确的。

//Eg2-1.cpp
void main(){
    int x;    //L1
    x=9;     //L2
    int y;    //L3
    y=x+1;    //L4
}

另外,C++允许在for循环语句中定义变量。

例2-2】 在C++中,在for循环的测试语句中定义变量。

//Eg2-2.cpp
#include<iostream.h>
void main(){
    int n=1;
    for(int i=1;i<=10;i++){
        int k;
        n=n*i;
        k=i;
    }             //i(在C++语言规范中,i的作用域到此就结束了。但某些编译器(如Visual C++ 6.0)扩大了for循环中定义变量的作用域,其有效范围扩展到了定义该变量的for循环后面的“}”,这里就属于这种情况。本程序在Visual C++ .NET中不能通过编译,原因是cout访问的i已失去了作用域。),k的作用域至此结束
    cout<<n<<i<<endl;  //i在此的值是11
}             //n,i的作用域到此结束

在C++中,变量在包含定义它的最近一对{ }内有效,称为块作用域。因此,上面程序中的n在整个main()函数内有效,而i和k仅在for循环体内有效。