首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

生手求帮!

2013-10-23 
新手求帮!!#include stdio.hvoid main(){int x1,y2{int x2{int x3printf(“x%d,y%d\n”,x,y)}pr

新手求帮!!
#include <stdio.h>
void main()
{
  int x=1,y=2;
  {
int x=2;
{
  int x=3;
  printf(“x=%d,y=%d\n”,x,y);
}
printf(“x=%d,y=%d\n”,x,y);
  }
  printf(“x=%d,y=%d\n”,x,y);
}

这段为什么输出是  x=3 y=2
                  x=2 y=2
                  x=1 y=2
这样的,教科书没有说,老师也是支支吾吾的,来这里请教大神了,别笑我哦,我是大一新生来的生手求帮!
[解决办法]
括号内定义的变量,只在括号内有效,我们称之为局部变量。
[解决办法]
老师支支吾吾的?什么狗屁老师啊。

这个道理很简单,就是说C允许你在{}中定义一个和上一级同名的变量,并且当你使用这个变量的时候,访问的是最近一层定义的那个,和外面的无关,外面的定义被隐藏。

这个特性有好处有坏处,好处是,开发者可以灵活地使用局部变量代替外部的变量,达到替换的目的,特别的,如果这个变量是一个函数指针的话,那么可以实现"monkey patch",也就是用自己的函数实现替代掉系统级别的那个。

坏处就是容易引发不容易察觉的bug。

热点排行