2.2 变量

  2.2.2 变量声明和定义的关系

 为了支持分离式编译(将程序分为若干个文件,每个文件可被独立编译),c++语言将声明和定义区分开来。

  声明:使名字为程序所知,一个文件如果想使用别处的名字则必须包含对那个名字的声明。

  定义:创建与名字相关联的实体。

  两者都规定了变量的类型和名字,但定义还申请存储空间,也可能会为变量赋一个初始值。

extern int j;        //声明
int j;                  //声明并定义
extern double pi = 3.14;    //定义

变量能且只能被定义一次,但是可以被多次声明。

 

静态类型:在编译阶段做类型检查,这就要求我们在使用变量前需声明其类型。

2.2.4 名字的作用域

同一个名字在不同的作用域可能指向不同的实体。名字的有效区域始于名字的声明语句,以声明语句所在作用域的末端为结束。

嵌套的作用域

int reused = 42;
int main()
{
    int unique = 0;
    //输出42 0
    std::cout<<reused<<" "<<unique<<std::endl;
    int reused = 0;
     //输出0 0
    std::cout<<reused<<" "<<unique<<std::endl;
    //输出42 0
    std::cout<<::reused<<" "<<unique<<std::endl;
    return 0;
}

如果函数有可能用到某全局变量,则不宜再定义一个同名的局部变量。

 

posted @ 2017-02-12 14:31  1ww3  阅读(122)  评论(0)    收藏  举报