精华内容
下载资源
问答
  • C语言-合理使用全局变量 全局变量 所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个程序,也就是所有的源文件,包括 .c 和 .h 文件 缺点 全局变量存在周周期长,将会占用更多的内存...

    C语言-合理使用全局变量

    全局变量

    在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个程序,也就是所有的源文件,包括 .c 和 .h 文件

    缺点

    1. 全局变量存在周周期长,将会占用更多的内存。
    2. 全局变量多处被调用,使全局变量的值变得不确定。
    3. 用全局变量会增加程序的耦合性,会有一定移植麻烦,代码重用率低。
    4. 全局变量,使用和更改他的地方多了以后,各个地方逻辑关系难以确定。
    5. 过多的全局变量,大大降低程序的可读性,可维护性。
    6. 容易造成命名冲突

    合理使用全局变量

    1. 如果只有某.c文件用,就static到该文件中;如果只有一个函数用,那就static到函数里面去;
    2. 尽量把变量的作用范围控制在使用它的模块里面,如果其他模块要访问,就开个读或写函数接口出来,严格控制访问范围。(就是利用.h文件#include)
    3. .当一个模块里面的全局变量超过3个(含)时,就用结构体包起来吧。要归0便一起归0,省得丢三落四的。
    4. .小程序结构简单,即使使用全局变量也方便管理。

    代码案例

    typedef struct rz_device_t rz_device_t;
    CLASS(rz_device_t)
    {
    	/*成员参数变量 */
        rz_device_param_t device_param;   
    };
    
    /* 定义一个全局设备对象 */
    static rz_device_t *pmain_dev;
    
    /* 设置主设备 */
    void main_device_set(rz_device_t *pdev)
    {
        pmain_dev = pdev;
    }
    
    /* 获取主设备 */
    rz_device_t *main_device_get(void)
    {
        return pmain_dev;
    }
    
    展开全文
  • 在C语言中使用全局变量

    千次阅读 2016-12-08 16:42:41
    先定义,再使用(最好不要使用static) uint32 chargeStatu = 0; 其它文件使用,如加入关键字"extern" extern bool chargeStatu;
    先定义,再使用(最好不要使用static)
    uint32 chargeStatu = 0;


    在其它文件使用,如加入关键字"extern"
    extern bool chargeStatu;
    展开全文
  • C语言中如何定义全局变量

    万次阅读 2010-12-22 12:21:00
    C语言中如何定义全局变量 C/C++2010-09-06 13:01:39阅读590评论0 字号:大中小 订阅 众所周知,全局变量在被定义后,系统会为全局变量分配内存并且它还可以被其他模块通过C语言中extern关键字调用。...

    C语言中如何定义全局变量

    C/C++ 2010-09-06 13:01:39 阅读590 评论0   字号: 订阅

    众所周知,全局变量在被定义后,系统会为全局变量分配内存并且它还可以被其他模块通过C语言中extern关键字调用。这样就必须在 xx.C 和xx.H 文件中定义。这种重复的定义很容易导致错误。 下面是只需用在头文件中定义一次就可以在别的模块使用的定义方法。
    格式: 定义全局宏。
     
    #ifdef   xxx_GLOBALS 
    #define  xxx_EXT
    #else
    #define  xxx_EXT extern
    #endif


     上面位于.H 文件中,每个全局变量都加上了xxx_EXT的前缀,xxx代表模块的名字。

    该模块的.C文件中有以下定义:


    #define  xxx_GLOBALS
    当编译器处理.C文件时,它强制xxx_EXT(在相应.H文件中可以找到)为空,(因为xxx_GLOBALS已经定义)。所以编译器给每个全局变量分配内存空间,而当编译器处理其他.C文件时,xxx_GLOBAL没有定义,xxx_EXT被定义为extern,这样用户就可以调用外部全局变量。

    进阶:在abc.H:


    #ifdef   abc_GLOBALS
     
    #define  abc_EXT
     
    #else
     
    #define  abc_EXT extern
     
    #endif
     
    abc_EXT  unsigned int      Ctr;

    同时,abc.H有中以下定义:


    #define  abc_GLOBALS
     

    当编译器处理abc.C时,它使得头文件变成如下所示,因为abc_EXT被设置为空。


    unsigned int       Ctr;

     
    这样编译器就会将这些全局变量分配在内存中。当编译器处理其他.C文件时,头文件变成了如下的样子,因为abc_GLOBAL没有定义,所以abc_EXT被定义为extern。


    extern unsigned int       Ctr;

     
    在这种情况下,不产生内存分配,而任何 .C文件都可以使用这些变量。这样的就只需在 .H 文件中定义一次就可以了。

    展开全文
  • C语言中,按作用域范围可以分为局部变量、全局变量2种类型局部变量局部变量就是函数内部声明的变量,它只本函数内部有效,也就是说,只能本函数内部使用 局部变量,只有当它所在的函数,被调用时才会被使用,...

    变量,可以定义在函数内,也可以定义在函数外
    定义在不同位置的变量,作用域也是不同的
    C语言中,按作用域范围可以分为局部变量、全局变量2种类型

    局部变量

    局部变量就是在函数内部声明的变量,它只在本函数内部有效,也就是说,只能在本函数内部使用
    局部变量,只有当它所在的函数,被调用时才会被使用,而当函数调用结束时,局部变量也就失效了

    全局变量

    在所有函数外部定义的变量,称为全局变量
    所有函数包括main()主函数,它不属于任何一个函数,而是属于源程序
    全局变量,可以为程序中的所有函数所共用,它的有效范围从定义处开始到源程序结束
    示例代码

    #include<stdio.h>
    int x=123;
    void show()
    {
        printf("show()函数中,x的值为:%d\n",x);
    }
    void main()
    {   
        show();
        printf("main()函数中,x的值为:%d\n",x);
    }

    运行结果
    这里写图片描述

    注意
    当局部变量与全局变量重名时,全局变量会被屏蔽

    展开全文
  • C语言C语言局部变量和全局变量

    千次阅读 2016-02-13 16:41:30
    全局变量】 · 定义 · 作用域 · 生命周期 【外部变量】 · 定义 · 用extern修饰变量 【内部变量】 · 定义 · 用static修饰变量 1.局部变量 · 定义 函数(代码块)内部定义的变量称为局部变量...
  • 什么是变量变量常量都是表征数据的一种形式;...变量和常量必须用标识符(或者可以理解成一个名字)来表示后才能使用。 赋值表达式语句把值赋给变量,或者更一般地说,把值赋给存储空间。 +++++++++++...
  • 那么什么是本地变量,什么又是全局变量呢? 本地变量 本地变量:直白地讲,本地变量就是函数内部定义地变量,也就是我们之前所定义地变量,90%用到地都是本地变量。那么本地变量有什么特点呢? 本地变量特点:只...
  • c语言中如何避免过多使用全局变量

    千次阅读 2020-11-10 22:19:33
    文章目录1、设计函数以传递指针类型的参数2、定义一个函数以获取/设置全局变量,利用static变量,将全局变量作用域限定于该函数,将全局变量隐藏起来3、把全局变量定义某一个 .c 文件, 并定义为 static类型,...
  • C语言局部变量和全局变量

    千次阅读 2015-12-20 23:28:02
    C语言函数的参数和返回值》提到,形参变量只被调用期间才分配内存单元,调用结束立即释放。这一点表明形参变量只有函数内才是有效的,...C语言中的变量,按作用域范围可分为两种:局部变量和全局变量
  • C语言全局变量和局部变量同名时的使用 全局变量作用域为程序的始终,局部变量作用于当前函数。 声明了同名变量的方法使用局部变量的数值 未声明同名变量的方法使用全局变量的数值 开始未声明局部变量,...
  • C语言、C++:全局变量与局部变量

    千次阅读 2019-04-14 14:11:10
    但由于附带了许多Java的知识,比如static关键字等对于初学者没必要的赘述,这里所以再写一篇十分简单明了的《全局变量与局部变量》(只涉及基本语言C语言)让读者快速入门与理解使用。 话不多说,直接干货 ↓ (....
  • 本篇文章主要根据不同使用场合,来分析三种程序运行期间一直可以修改的变量 1. static 局部变量 ...2. static全局变量  当某个.c源文件所有函数都使用这个变量时, 它的生存期为整个源程序,其作用域也是,且
  • C语言中局部变量与全局变量在内存的存放位置
  • C语言中局部变量和全局变量在内存的存放位置

    千次阅读 多人点赞 2012-12-12 10:16:41
    C语言中局部变量和全局变量变量的存储类别(static,extern,auto,register)   1.局部变量和全局变量 讨论函数的形参变量时曾经提到,形参变量只被调用期间才分配内存单元,调用结束立即释放。这一点表明形参...
  •   基本概念: 作用域:起作用的区域,也就是可以工作的范围。...C语言中局部变量就分配。   局部变量  普通的局部变量定义的时候直接定义或者前面加上auto void func1(void){&nbs...
  • C语言中static全局变量与普通的全局变量区别

    千次阅读 多人点赞 2018-12-09 20:54:05
    1. static全局变量与普通的全局变量有什么区别 ?  全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。  全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者存储方式...
  • 非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 静态全局变量则限制了其作用域,即只定义该变量的源文件有效,同一个源程序的其他源...
  • C语言中定义全局变量

    2016-12-27 20:06:00
    (1)在C语言的头文件定义变量出现的问题 最好不要傻嘻嘻的头文件里定义什么东西。比如全局变量: /*xx头文件*/ #ifndef _XX_头文件.H #define _XX_头文件.H int A; #endif那么,很糟糕的是,这里的int ...
  • C语言中局部变量和全局变量 变量的存储类别(static,extern,auto,register)   局部变量和全局变量 讨论函数的形参变量时曾经提到,形参变量只被调用期间才分配内存单元,调用结束立即释放。这一点表明形参...
  • 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量全局变量本身就是静态存储方式, ... 而静态全局变量则限制了其作用域, 即只定义该变量的源文件内有效, 同一源程序的其它源文件不能使
  • 我们之前学到的知识里面, 定义过很多变量, 比如int 变量, double变量, long变量, 这些都是属于变量, 这次我们所说的知识是这些变量的基础上再添加一些知识, 那就是全局变量以及局部变量. 开始 我们来看一...
  • C语言在头文件定义全局变量的技巧

    千次阅读 2020-05-01 12:48:42
    https://mp.weixin.qq.com/s/M8hSstM1ZajdQAACU4OiWw
  • 汇编语言和C语言混合编程在C语言中通过全局变量来引用汇编的数据定义非常普遍,然而却存在同名不同义的陷阱。1 测试代码汇编语言的定义整数变量studentID,并赋初值,如下: .global studentID .data ...
  • C语言中全局变量定义与使用

    千次阅读 2016-04-18 21:55:26
    1. 书对‘全局变量’的定义  函数内定义的变量是局部变量,而函数外定义的变量叫做外部变量,外部变量是全局变量全局变量可以为本文件其他函数所共用它的有效范围从定义变量的位置开始到本源文件结束。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 135,419
精华内容 54,167
关键字:

在c语言中最好使用全局变量

c语言 订阅