前言本博文的代码是基于VC 6.0编写的; 当讨论全局和局部变量时,实际上讨论的是变量作用域; 局部变量是什么? 首先是变量。 其次,这个变量只在程序的局部范围内有效。
局部变量在以下位置定义:
1 .函数开头
2 .函数中的复合语句内定义;
3 .形式参数
4 .函数中间(非开头);
# include stdio.hvoidmain ({ } void fun1) charlocal_0) /格式参数:仅在此函数中有效; { char Local_1='a '; //函数的开头:在此语句以下的函数内有效; { char local_2='b '; //函数的复合句内定义:只在本复合句的内接本行以下有效; } char Local_3='c '; //函数中间(不是开头) )只在本行以下有效; }注意:
1 )程序运行到某个函数时,为该函数内部的局部变量分配内存空间的局部变量在函数运行结束后,将释放变量占用的内存。
全局变量是什么? 是变量,是在全局范围内有意义的变量; 所谓全球化,不是真正的全局,而是在定义位置以下的范围内有效;
全局变量定义的位置:
1 .文件开头
2 .函数之前
3 .函数后:
4 .文件结尾
例如:
#include stdio.hchar Global_1='A '; //源文件的开头:此行以下定义的所有函数均有效; voidmain{}charglobal_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 )通用性差:定义在编程过程中要求函数“内聚性”强、函数与函数之间“耦合性”弱的全局变量时,必须注意在有效范围内避免变量重复。 此外,当全局变量由在文件之间调用的函数调用时,如果不确保全局变量和文件之间不存在重复变量,则可能会出现错误。 因此,为了提高程序的可靠性、可移植性、可读性等,尽量不使用全局变量