作用域,可见性,生存期。

来源:互联网 发布:c语言实现汉罗塔 编辑:程序博客网 时间:2024/06/05 22:45

1.作用域表示某个标识符在什么范围有效;

函数原型中的参数,其作用域始于“(“,结束于”)”.例如,设有下列原型声明:double Area(double radius);radius的作用域仅在于此,不能用于程序正文其它地方。**块作用域:**在块中声明的标识符,其作用域自声明处起,限于块中,例如:
    void fun (int a)    {           int b(a);           cin>>b;           if(b>0)    {           int c;           ......    }    }
**类和文件作用域:**  类作用域作用于特定的成员名,类及其对象有特殊的访问和作用域规则.  不在前述各个作用域中出现的声明,具有文件作用域,这样声明的标识符的作用域开始于声明点,结束于文件尾.**2.可见性指的是标识符是否可见,可引用.**    如果标识在某处可见,则可以在该处引用此标识符.    标识符应声明在先,引用在后.    在同一作用域中,不能声明同名的标识符.    如果某个标识符在外层中声明,且在内层中没有同一标识符的声明,则该标识符在内层可见.    对于两个嵌套的作用域,如果在内层作用域内声明了与外层作用域中同名的标识符,则外层作用域的标识符在内层不可见.
    #include <iostream.h>    int i;//文件作用域    {        i=5;    {         inti;//块作用域        i=7;        cout<<"i"<<i<<endl;//输出7    }         cout<"i="<<i;//输出5         return 0;    }
**3.对象的生存期:**对象从产生到结束的这段时间就是它的生存期。在对象生存期内,对象将保持它的值,直到被更新为止。**静态生存期:**这种生存期与程序的运行期相同.在文件作用域中声明的对象具有这种生存期.在函数内部声明静态生存期对象,要冠以关键字static
    #include<iostream.h>    int i=5;//文件作用域    int main()        {        cout<<"i="<<i<<endl;//i具有静态生存期        return 0;    }

动态生存期:
块作用域中声明的对象是动态生存期的对象(习惯称局部生存期对象)
开始于程序执行到声明点时,结束于命名该标识符的作用域结束处。

#include <iostream.h>void fun();void main(){   fun();   fun();} void fun (){    static int a=1;    int i=5;    a++;    i++;    cout<"i="<<i<<",a="<<a<<endl;    }}