第二种,声明在所有函数外面的变量。

int global = 100;

int main(int argv, char const* args[])

{

}

int unc(void)

{}

这里的global变量它在所有的函数外面,所以当前.c文件中所有的函数都可以使用它。

还有一点比较重要的东西:如果一个变量的作用域内还有其他的作用域,那么在这个作用域里面也是也是用这个变量的。

举个例子,区长的作用域是整个郫都区,而红光镇是在郫都区内,所以区长自然可以管理红光镇的事务。

这也解释了为什么global能够被当前.c文件里的所有函数使用,因为这些函数的范围在global作用域中。

那么刚刚main和add中都存在名为sum的变量问题也解决了,因为这两个sum根本就在是各种的作用域中声明的。其实重点是在同一个作用域中声明同名变量,注意,是声明,而不是不能有,这点一定要注意!

也就是说下面这种是不行的

void unc(void)

{

int a = 10;

int a = 10;

}

而下面两种是可以的:

void uncA(void)

{

int a = 10;

}

void uncB(void)

{

int b = 10;

}

或者这种也是可以的:

int a = 10;

void uncD(void)

{

int a = 20;

}

一下子和你们说了这么多,估计你们很难理解,不过只要多看看,再结合实际运用,应该就能够理解了。

简单的来说,作用域你可以理解为一个变量的地盘,当要用这个变量的时候在这个变量的地盘中,那就没有问题,如果不在这个变量的地盘中,那就不能使用。

还有就是无论什么时候都不能让电脑疑惑,就像一个作用域中你如果声明了两个名字相同的变量,计算机就懵了,因为它也不知你到底是要使用哪一个。」

老爹补充道。

「那上面最后一种情况计算机难道不会疑惑么?它怎么知道到底使用哪个a呢?」

本章已完 m.3qdu.com