A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Nova 中级黑马   /  2015-8-4 22:15  /  2443 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

10黑马币
为什么全局变量和局部变量使用同名的变量会出问题???????

最佳答案

查看完整内容

局部变量:在函数内部或复合语句内部定义的变量(函数的形参也属于局部变量) 全局变量:在函数外部定义的变量。(若全局变量和某个函数中的局部变量同名,则在该函数中,此全局变量被屏蔽,在该函数内,访问的是局部变量,与同名的全局变量不发生任何关系)

5 个回复

倒序浏览
局部变量:在函数内部或复合语句内部定义的变量(函数的形参也属于局部变量)     全局变量:在函数外部定义的变量。(若全局变量和某个函数中的局部变量同名,则在该函数中,此全局变量被屏蔽,在该函数内,访问的是局部变量,与同名的全局变量不发生任何关系)
回复 使用道具 举报
本帖最后由 余丽丽 于 2015-8-4 22:38 编辑

例如:
#include <stdio.h>
int a=20;
int main(int argc, const char * argv[])
{
    printf("1->%d\n",a);//访问的全局变量  20
    if(1)
    {
        int a;//定义了一个与全局变量同名的局部变量   
        a=10;
        printf("2->%d\n",a);//访问的局部变量   10
    }
    printf("3->%d\n",a);//访问的全局变量   20
    return 0;
}
运行结果:
1->20
2->10
3->20

上面的例子可以看出:
当定义了一个与全局变量同名的局部变量的时候,在局部变量的生命周期里,优先访问局部变量。
所以说,这样做语法上没有问题,但是容易造成赋值混乱!也不利于代码的后期维护!

回复 使用道具 举报
如果在一个工程里,既有全局变量又有局部变量的话,在局部变量所在函数里全局变量不起作用,在此函数外部全局变量就起作用了
回复 使用道具 举报
可以用this  区分开来
回复 使用道具 举报
局部变量在局部内有效,全局变量,全局都有效,但是在局部变量中,全局变量不会产生作用。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马