C语言中变量的使用

Author: Date: 1995-11-24

        C语言对自动变量定义在块中的位置没有严格规定,但在使用时仍需小心。对于大多数C语言编译程序,不允许在语句序列中说明自动变量。如:
        switch(a){
        case 1:
        auto int p;
        …
        是错误的,带有标号(case 1:)的语句不是代码块,而是语句序列。对于下面的两种用法:
        switch (a){
        auto int p;
        case 1:
        和
        switch(a){
        case 1:
        if(1){
        auto int p;
        …
        都是正确的。
        全局变量储存在动态存储区之外的固定存储区域中,不论使用与否,都占用存储空间,当程序中多个函数都使用同一数据时,全局变量很有效,但大量使用全局变量会制造出一些麻烦,产生一些副作用;同时由于全局变量的使用,降低了函数的通用性,对结构化设计是很不利的。减少副作用的方法是使静态局部变量代替全局变量,当不能满足需要时可以使用静态全局变量,以保持函数的独立性。静态变量使程序员能将程序的一部分相对其他部分隐蔽起来,这对管理一个庞大而复杂的程序非常有利;同时储存分类符static有助于生成通用函数 ,并放入函数库中。