黑马程序员技术交流社区

标题: 求大神解决问题,关于全局变量的 [打印本页]

作者: Nova    时间: 2015-8-4 22:15
标题: 求大神解决问题,关于全局变量的
为什么全局变量和局部变量使用同名的变量会出问题???????

作者: ReoWei    时间: 2015-8-4 22:15
局部变量:在函数内部或复合语句内部定义的变量(函数的形参也属于局部变量)     全局变量:在函数外部定义的变量。(若全局变量和某个函数中的局部变量同名,则在该函数中,此全局变量被屏蔽,在该函数内,访问的是局部变量,与同名的全局变量不发生任何关系)
作者: 余丽丽    时间: 2015-8-4 22:37
本帖最后由 余丽丽 于 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

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


作者: 张中付    时间: 2015-8-24 10:09
如果在一个工程里,既有全局变量又有局部变量的话,在局部变量所在函数里全局变量不起作用,在此函数外部全局变量就起作用了
作者: Liveei    时间: 2015-8-24 19:57
可以用this  区分开来
作者: 唐肖虎    时间: 2015-8-26 10:15
局部变量在局部内有效,全局变量,全局都有效,但是在局部变量中,全局变量不会产生作用。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2