局部变量:也叫内部变量,是在一个函数内部定义的,其作用域限制在所定义的函数中,不可在其它函数中使用,而该函数也不可以使用其它函数所定义的局部变量。函数的形式参数被认为是局部变量,在函数被调用时才会在内存的动态存储区中开辟存储单元。函数调用结束时,与此函数内的其他局部变量一样释放所占有的内存单元。局部变量的存储类型可以通过类型标示符auto和static来规定。利用auto定义的变量存放在动态存储区中,auto可以省略;利用static定义的变量存放在静态存储区中。编译器并不将局部变量自动预设为0!!!其值是不确定的或无意义的。程序员必须在局部变量使用前确切的给他们赋值。不同函数中可以使用相同名字的局部变量,他们代表不同的变量,相互之间不会形成干扰。局部变量还可以与全局变量同名,此时在局部变量的而作用域,全局变量不起作用。
全局变量:也叫外部变量,存放在静态存储区中,作用域从全局变量定义之后知道该源文件结束的所有函数;当通过extern作引用说明,全局变量的作用域可以扩大到整个程序的所有文件。但当使用static类型标示符时,与普通全局变量的区别是作用域。普通全局变量不仅对文件中的所有函数都是可见的,而且能被其它文件中的函数调用。而static型全局变量仅对其所在文件中定义处之后的函数是可见的,不能被其他文件使用。全局变量初始化是在其定义时进行的。而其初始化仅执行一次。不定义的话默认为0!!!
在C语言中,全局变量和静态变量,如果没有赋初值,则默认初始值int,float,char,空指针
分别为0