c语言 引用定义变量,如何在c语言中定义及引用全局变量?
如何在c语言中定义及引用全局变量?
答案:5 信息版本:手机版
解决时间 2019-10-03 10:30
已解决
2019-10-02 15:19
如何在c语言中定义及引用全局变量?
最佳答案
2019-10-02 16:05
1、全局变量也称为外部变量,它是在函数外部定义的变量。
它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。
只有在函数内经过说明的全局变量才能使用。全局变量的说明符为extern。
但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。外部变量是在函数外部定义的全局变量,它的作用域是从变量的定义处开始,到本程序文件的
结尾。在此作用域内,全局变量可为各个函数所引用。编译时将外部变量分配在静态存储区。
有时需要在其他文件中使用extern来声明外部变量,以扩展外部变量的作用域。
也可用static声明外部变量,使该变量不能被其他文件引用。有时候他们是一样的,只有稍微一点的区别而已,不用太过于区分的。
2、定义及引用方法:
#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 文件中定义一次就可以了。
全部回答
1楼
2019-10-02 19:08
如果全局变量在同一个C文件中,则可以直接去使用这个全局变量,就像楼上(zsx10110)举的那个例子一样,但是在另外一个C 文件中还想继续使用这个变量的时候就需要使用extern来声明引用这个全局变量了,比如说你把全局变量定义声明在a.c文件中的,你在b.c文件中也想使用,则在里面加上这句extern int a;(int a是你在a.c中定义的,视实际情况而定)
2楼
2019-10-02 18:28
放置于主函数之前定义的变量。
3楼
2019-10-02 17:31
全局常量定义,在主函数体外部直接调用预处理命令#define 常量名 量值
引用时可以再任意函数体内直接调用该常量名
全局变量定义,变量不存在全局概念,只有相对概念。你可以通过声明作用域来进行声明。比如:
std::a。这就是一种。
4楼
2019-10-02 16:23
举个例子
#includeint a =0;//这里不就是定义了一个全局变量a了吗
int main()
{
printf("%d",a);
}
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯
c语言 引用定义变量,如何在c语言中定义及引用全局变量?相关推荐
- c语言stm8变量存储类型,STM8使用----STVD(COSMIC)定义变量指定其类型和位定义
STM8使用----STVD(COSMIC)定义变量指定其类型和位定义 http://www.51hei.com/bbs/dpj-31009-1.html (出处: 单片机论坛) stm8 stvd下 ...
- 汇编语言定义变量c,汇编c语言变量
广告 Apple iPad,AirPods Pro,Bose耳机,机械键盘,健身环等着您 由于c ++支持重载,因此可以使用相同的函数名称但不同的参数类型定义函数. 在编译期间,编译器根据函数的参数类 ...
- C语言块级变量:在代码块内部定义的变量
所谓代码块,就是由{ }包围起来的代码.代码块在C语言中随处可见,例如函数体.选择结构.循环结构等.不包含代码块的C语言程序根本不能运行,即使最简单的C语言程序(上节已经进行了展示)也要包含代码块. ...
- C语言里 指针变量强制类型转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...
强制类型转换形式:(类型说明符) (表达式) 举例说明:1) int a; a = (int)1.9; 2)char *b; int *p; p = (int *) b; //将b的值强制转换为指向整 ...
- php中请写出定义变量的两种方法,php定义变量几种
1.定义常量define("CONSTANT", "Hello world."): 常量只能包含标量数据(boolean,integer,float 和 str ...
- 如何在shell脚本中定义数组及遍历
问题起源:脚本中定义多个监控模块,代码重复率高,仅仅模块名不同,所以思考如何精简代码? 1.如何定义数组及访问数组: var=(1 2 3 4 5) var=(a b c d e) var=('1' ...
- c语言中结构体类型定义的函数指针,结构体中定义函数指针
结构体指针变量的定义 定义结构体变量的一般形式如下:形式1:先定义结构体类型,再定义变量struct 结构体标识符{ 成员变量列表;-};struct 结构体标识符 *指针变量名;变量初始化:stru ...
- python如何定义变量a_简述如何用Python定义一个变量类型?
本文主要讲述了如何去定义一个Python变量,变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型. 变量在程序中就是用一个变量名表示了,变量名必 ...
- Iar环境c语言调用汇编函数,如何在IAR EWARM中通过内联汇编程序在另一个模块中调用C函数?...
我在硬故障处理程序中有一些程序集.程序集基本上是为了传递当前堆栈指针作为参数(在R0中).它看起来像这样...如何在IAR EWARM中通过内联汇编程序在另一个模块中调用C函数? __asm(&quo ...
最新文章
- 如何用matlab测a相相电流,电流平均值谐波检测方法MATLAB仿真
- 1.1 计算机视觉-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
- powerBi odbc 连接impala 实现自助分析
- MyBatisPlus查询方法selectById、selectOne、selectBatchIds、selectByMap、selectPage的使用
- Easy Multiplication 快速傅里叶变换
- 和 jQuery 说再见,Bootstrap 5 将移除对其依赖
- MTK eCos系统的有线驱动收包流程
- 据我所知目前就只飞秋表情库
- 2019最受欢迎语言_2019年100最受欢迎的免费在线课程
- idea设置主题风格
- 新农合医疗保险补偿制度
- 《Spring实战》读书笔记-第6章 渲染Web视图
- 【线性代数】矩阵的初等变换与线性方程组
- HIFI音频解码芯片ES9023
- transition动画效果
- JAVA—— AJAX
- 域环境SID相同到底有什么影响?
- IMAX在中国的影院网络将近一千家;乐高计划2021年在中国开设80家品牌零售店 | 美通企业日报...
- python之torchlight使用_《火炬之光2》功能型MOD制作教程
- cocos2d-x win32运行时报opengl 版本过低
热门文章
- 在线客服系统访客发送录音功能,在elementui中使用js-audio-recorder实现录音功能,然后上传文件发送出去...
- word中取消链接上一节在哪_word中如何断开与前一节的页眉链?
- SVN覆盖本地文件和误删文件的恢复方法
- 完全在GNU/Linux下工作
- 华为eNSP实验-组播服务器实验
- android manager provider模式,安卓情景模式开发(一)-控制GPS/WIFI/蓝牙/飞行模式...
- Android 动画—补间动画
- dnf能测试套装的软件,(资料站)教你选择合适的装备 DNF套装介绍
- 使IFRAME在iOS设备上支持滚动
- BCI Competition IV 2a数据集介绍