局部变量能否和全局变量重名???

       这个问题, 网上回答的都是一致的, 因为大部分只是专业性的描述答案, 并且都是对理解方面比较抽象, 以下的这些答案内容分析是个人的一些理解然后编辑而成, 如果不全面或者是阐述错误, 忘读者能够指出, 我会重新整理.

      首先是网络上的答案:

      "能, 局部会屏蔽全局[1]. 要用全局变量, 需要使用"::"[2];

       局部变量可以与全局变量同名,  在函数内引用这个变量时, 会用到同名的局部变量, 而不会用到全局变量, 对于有些编译器而言, 在同一个函数内可以定义多个同名的局部变量, 比如在两个循环体内都定义同名的局部变量, 而那个局部变量的作用域就在那个循环体内[3]"

 1.局部会屏蔽全局: 

        {

            int i=2,j=3,k;

            k=i+j;//外部变量已经赋值, 对以下内部变量中不起作用

            {

                int k=8;//局部变量, 在内部, 和外部的函数并不起冲突

                printf("%d\n",k); 

            } 

            printf("%d\n",k); 

        }

      输出值为8,5;

 2.要用全局变量, 需要使用"::":

        char    zhou;    //全局变量

        void    sleep()

        {

            char    zhou;    //局部变量

            char(局部变量) = char(局部变量) *char(局部变量) ;

            ::char(全局变量) =::char(全局变量) *char(局部变量);

        }


3. 在同一个函数内可以定义多个同名的局部变量       

         int a = 10;//在同一个函数内部, 先后执行, 两个循环的命名都是一样的 

        {

            for (int i = 0; i < 3; i++) {//作用域外的全局变量a, 并不影响, 循环体内部的变量

               int a = i;//局部变量

                NSLog(@"i1 = %d\n", a);

            }

            for (int i = 0; i < 4; i++) {

                int a = i;//局部变量

                NSLog(@"i2 = %d\n", a);

            }

        }

        NSLog(@"a = %d", a);

输出值为

2015-02-22 13:12:53.511 [54833:303] i1 = 0

2015-02-22 13:12:53.513 [54833:303] i1 = 1

2015-02-22 13:12:53.514 [54833:303] i1 = 2

2015-02-22 13:12:53.514 [54833:303] i2 = 0

2015-02-22 13:12:53.515 [54833:303] i2 = 1

2015-02-22 13:12:53.515 [54833:303] i2 = 2

2015-02-22 13:12:53.516 [54833:303] i2 = 3

2015-02-22 13:12:53.516 [54833:303] a = 10




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值