C语言
-
局部变量、
-
函数内定义的变量、只能在本函数内使用、
-
可以调用其它函数、但是其它函数仍然无法使用调用者的变量、
-
不同的函数可以使用相同名称的变量、互补干扰、
-
形式参数、也可视为局部变量、
-
在复合语句中定义的变量、仅在复合语句中有效、该种复合语句成为——程序块、
-
{ int a; c=5 }
-
-
、
-
、
-
-
全局变量
-
函数外定义的变量、
-
#include<stdio.h> int p =1,q = 5;//函数外定义的变量、全局变量 int main() { }
-
-
、可以让其它函数共用、
-
优点
1. 增加了函数与函数之间的数据联系、如果一个函数改变了全局变量的值、就能影响到其它的函数、 2. 相当于各个函数之间有传递的直接通道、不在需要通过实参和形参来传递数值、
-
缺点
1. 全局变量在整个程序的周期运行都占用内存、而不像函数内部的局部变量、用完会被回收 2. 降低了函数的通用性 3. 函数在执行时依赖外部的全部变量 4. 如果程序迁移则需要将外部变量一起迁移 2. 降低了程序的清晰性呵呵可读性、 3.
-
如果某个函数想引用它后面定义的全部变量、则可以用一个关键字——extern——来做一个外部变量说明、表示该变量在函数外部定义、
-
extern 函数名
-
相当于提前声明
-
也就是一个函数不能使用某一个变量可以在此函数前用exten来声明这个变量、
-
a函数想使用b函数的局部变量、可以在a函数前使用extern来声明有此函数、便可实现使用b函数的局部变量
-
外部变量说明可以多次、而且不分配内存、
-
extern——仅仅是为了引用变量而做的声明
-
-
、
-
-
局部变量是在函数内定义的变量所以变量的有效域便是整个函数、而全局变量则是在函数外定义所以整个源文件都可以使用这个变量、而程序块则是范围更小的范围内使用变量、所以注意其变量的使用范围便可、
-
、全部变量————慎用、
-
定义分配内存、声明不分配内存、
-
如果全局变量和局部变量同名、则在局部变量使用范围内全局变量不起作用、——全局变量的值也不受其影响、
-
int a = 100, b = 500;//定义 void c(int a, int b) { a = 10;//函数内的变量——局部变量 b = 200;//函数内的变量——局部变量 printf("a=%d ", a);//局部变量的值改变 printf("b=%d ", b);//局部变量的值改变 return;//返回——返回后局部变量的值便没有啦、因为内存的被释放掉啦、 } int main() { a = 3;//重新赋值 b = 9;//重新赋值 printf("a=%d ", a); printf("b=%d ", b); c(a, b); printf("a=%d ", a);//不受局部变量的影响 printf("b=%d ", b);//不受局部变量的影响 }
-
、