外部变量和全局变量具有什么关系呢?
先说结论:
全局变量是一种外部变量,取决于外部变量放在哪里,如果放在程序的开头,那就是全局变量。
具体的验证过程如下:
#include <stdio.h>
int p=10;
int q=90;
void function1()
{
printf("function1:%d\n",p);
printf("function1:%d\n",q);
}
void function2()
{
printf("function2:%d\n",p);
printf("function2:%d\n",q);
}
int main()
{
function1();
function2();
printf("main:%d\n",p);
printf("main:%d\n",q);
}
上述代码的编译结果是
若将p和q的位置放在function1和function2之间,代码如下:
#include <stdio.h>
void function1()
{
printf("function1:%d\n",p);
printf("function1:%d\n",q);
}
int p=10;
int q=90;
void function2()
{
printf("function2:%d\n",p);
printf("function2:%d\n",q);
}
int main()
{
function1();
function2();
printf("main:%d\n",p);
printf("main:%d\n",q);
}
再看看编译结果:
在4和5行均有报错问题,说明此时p和q直对其下面的代码产生作用,但对于其上方的代码不起作用。即p和q不是全局变量。
关于“全局变量”,在编程时,使用全局变量确实会便捷一些,但有隐藏风险——所有函数都可以操作这个变量。这里涉及到多线程运行的知识点,现在了解这些就够了。