C语言全局变量和局部变量

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wuyuzun/article/details/82354885

前言

  1. 本博文的代码是基于VC++6.0编写;
  2. 讨论全局和局部变量时,其实就是对变量的作用域进行讨论;

局部变量

是什么?首先是一个变量,其次,这个变量只是在程序的局部范围内有效;
局部变量定义在那些位置:
1. 函数的开头;
2. 函数内的复合语句内定义;
3. 形式参数;
4. 函数中间(非开头);

#include <stdio.h>
void main()
{
}
void fun1(char local_0)  //形式参数:只在此函数有效;
{
    char Local_1 = 'a';  //函数的开头:在本句以下的函数内有效;
    {
        char local_2 = 'b';  //函数的复合语句内定义:只能在本复合语句内切本行以下有效;
    }
    char Local_3 = 'c';  //函数中间(非开头):只能在本行以下有效;
}

注意:
1)程序执行到某个函数时,这个函数内部的局部变量将会被分配内存空间;局部变量在函数执行结束后,变量所占内存将会被释放;

全局变量

是什么?是变量,可以在全局范围内有意义的变量;所谓全局也并不是真正的全局,而是在定义处以下的范围内才是有效的;
全局变量定义的位置:
1. 文件开头;
2. 函数前;
3. 函数后;
4. 文件结尾;
举例:

#include <stdio.h>

char Global_1 = 'A';  //源文件开头:在此行以下的所有定义的函数都有效;
void main()
{
}

char Global_2='B';  //函数后和函数前:此全局变量在此行之前是无效,只能在此之下的函数中有效;

void fun1()
{
    char Local_1 = 'a';
    {
        char local_2 = 'b';
    }
    char Local_3 = 'c';
}

char Global_3 = 'B';//程序结尾:程序结尾的全局变量是没有意义的;

注意:
1)为了区别全局变量和局部变量,往往大家在写程序的时候都喜欢将全局变量的首字母大写,而局部变量的首字母小写;
2)全局变量的优点和缺点:
优点:C语言的函数,每次最多只能返回一个值,但是如果定义了全局变量,那么在这个变量的有效范围内,很多函数都能改变这个变量的值,所以增加了函数之间的联系,通过函数的调用可以得到一个或一个以上的值;
缺点:(大量使用全局变量的情况下)
1)占内存:全局变量所占的内存空间不会像局部变量一样会被释放;
2)降低程序清晰性:无法随时确定定义的全局变量的值的大小;
3)降低通用性:程序设计时要求函数的“内聚性”强,函数与函数之间“耦合性”弱;定义全局变是一定要注意在有效范围内变量不能重名,并且当全局变量被跨文件调用的函数调用时,不能出现全局变量与所跨文件中存在重名变量,否则有可能会出错;所以,为了提高程序的可靠性,可移植性和可读性等,全局变量尽量少用;

猜你喜欢

转载自blog.csdn.net/wuyuzun/article/details/82354885