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

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;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值