语句作用域

有些语句允许在它们的控制结构中定义变量:

while(int i=get_num())
cout<<i<<endl;
i=0;  //error:i is not accessible outside the loop

--------------------------------------------------------------我是有压力的分割线-------------------------------------------

注解:在条件表达式中定义的变量必须初始化,该条件检验的就是初始化对象的值

---------------------------------------------------------------有压力的分割线----------------------------------------------

在语句的控制结构中定义的变量,仅在定义它们的块语句结束前有效.这种变量的作用域限制在语句体内.通常,语句体本身就是一个块语句,其中也可能包含了其他的块.一个在控制结构里引入的名字是该语句的局部变量,其作用域局限在语句内部.

//index is visible only within the for statement
for(vector<int>::size_type index=0;index!=vec.size();++index)
{
 //new scope,nested within the scope of this for statement
 int square=0;
 if(index%2)     //ok:index is in scope
  square=index*index;
 vec[index]=square;
}
if(index!=vec.size()) //error:index is not visible here

如果程序需要访问某个控制结构中的变量,那么这个变量必须在控制语句外部定义.

vector<int>::size_type index=0;
for(/*empty*/;index!=vec.size();++index)
//as before (就是跟上面的块语句一样,省略了)
if(index!=vec.size())  //ok:now index is in scope
//as before

------------------------------------------------------------------我是饥饿的分割线---------------------------------------

注解:早期的C++版本以不同的方式处理for语句中定义的变量的作用域:将for语句头定义的变量视为在for语句之前定义.有些更旧式的C++程序代码允许在for语句作用域外访问控制变量.

------------------------------------------------------------------我是饥饿的分割线-------------------------------------

对于在控制语句中定义的变量,限制其作用域的一个好处是,这些变量名可以重复使用而不必担心它们的当前值在每一次使用时是否正确.对于作用域外的变量,是不可能用到其在作用域内的残留值的.
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值