老爹话音未落,小弦子就开始发难了。还别说,这个问题还问得真是好,以至于我都有点怀疑老爹是不是又讲错了,因为这好像又有些前后矛盾。
我发现在发生了刚才老爹讲错这件事情后,无论他说什么我都会考虑有没有问题,因为那种让大人承认错误的感觉,真的是太——爽了。
「哈哈,在回答这个问题之前,我先问你们一个问题。在你们学校应该有校长、年级主任、班主任对吧?」
「嗯」
我和小弦子对于这个问题虽然感到有些不明所以,但还是齐刷刷地点了点头。
「呐,校长作用域是整个学校,你们班的事情肯定也能管是吧?」
「嗯」
「年级主任作用域是你们整个四年级,你们班的事情也能管对吧?」
「没错。」
「班主任作用域是你们整个班,管理班上的事情是理所应当的。那么问题来了,如果你们有问题的时候,是去找班主任,或者是年级主任还是直接找校长?」
「肯定是班主任啊,年级主任和校长我们又不熟。」
我撇了撇嘴,有些不满意老爹问出的这种丝毫没有水品的问题。一旁的小弦子虽然没有说话,但也深以为然地点了点头。
「对了嘛,换句话说,你们和班主任的关系要近一些,其次是年级主任,最后是校长,是这个道理嘛?」
「嗯」
「其实,你们这种做法专业的来讲叫做就近原则。计算机执行程序的时候也一样啊,它找离当前执行语句最近的那个。这里的近可不是代码位置的远近,而是作用域的远近。
int a = 10;
void uncD(void)
{
int a = 20;
print(“a =%d“, a);
}
在刚才的例子中,如果执行函数uncD()的话,由于a = 20的这个变量a作用域是整个函数uncD(),如果把函数uncD()比作你们班,那这个a=20这个变量a就相当于你们班主任,a=10那个就是你们的年级主任了,按照你们的说法,print函数输出的结果会使用哪个a?」
「a=20」
我和小弦子异口同声回答道。
「这是你们自己说的哈,错了可和我没关系。」
老爹笑了笑。
为了谨慎起见,我和小弦子都写代码验证了一下,结果果然如同我们所料。
一下子学习了这么多东西,我感觉到很充实。老爹让我们休息了一个小时,毕竟这些东西还需要我们慢慢去体会、理解。
果然,实践是检验真理的唯一准则。
在这一个小时中,我和小弦子写了好几个例程来验证变量作用域这个问题,然后相互交流了心得。这样一来,我们对于这个知识点的理解又多了一层。
一连对着电脑这么久,是感觉到有些头晕脑胀的。于是老爹带着我们去小区转了一圈,舒缓一下身体。
「好了,我们继续说变量的事情。
从我们见过的变量来看,变量分两种,一种是定义在函数参数列表或者内部,一种定义在函数外部,比如说:
int global = 10;
void uncE(int a)