问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在c语言中定义及引用全局变量?93

发布网友 发布时间:2023-11-05 09:16

我来回答

5个回答

热心网友 时间:2024-11-17 13:28

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 文件中定义一次就可以了。

热心网友 时间:2024-11-17 13:28

如果全局变量在同一个C文件中,则可以直接去使用这个全局变量,就像楼上(zsx10110)举的那个例子一样,但是在另外一个C 文件中还想继续使用这个变量的时候就需要使用extern来声明引用这个全局变量了,比如说你把全局变量定义声明在a.c文件中的,你在b.c文件中也想使用,则在里面加上这句extern int a;(int a是你在a.c中定义的,视实际情况而定)

热心网友 时间:2024-11-17 13:29

全局常量定义,在主函数体外部直接调用预处理命令#define 常量名 量值
引用时可以再任意函数体内直接调用该常量名
全局变量定义,变量不存在全局概念,只有相对概念。你可以通过声明作用域来进行声明。比如:
std::a。这就是一种。

热心网友 时间:2024-11-17 13:29

举个例子
#include<stdio.h>
int a =0;//这里不就是定义了一个全局变量a了吗

int main()
{

printf("%d",a);

}

热心网友 时间:2024-11-17 13:30

放置于主函数之前定义的变量。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎样让孩子主动找老师补课? 表格列求和公式怎么设置 求和函数公式怎么输入 北京注册成立一个公司需要多少钱 北京公司都是什么 手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 急需好的写景作文,500~1000字19 笔记本怎么连上多媒体?21 电脑如何连接多媒体 ?15 多媒体投影仪与笔记本电脑连接设置6 女生以后从事软件测试方面的工作怎么样?441 白藜芦醇能长期吃吗42 如何正确服用白藜芦醇2 求助!!!这句话的意思???天食人以五气,地食人以五味,五气入鼻,藏于心... vf中定义私有内存变量的命令2 现在盆景澳洲杉什么价格? 澳洲杉多少钱一盆12 盆栽澳洲杉一米左右高,大概多少钱?18 澳洲杉盆景贵吗3 澳洲杉的市场价格是多少43 澳洲杉盆景一般多少钱35 纸梅槐花的折法4 2013年初一英语书(人教版)单词表加音标。,很急!!!图片...35 澳洲杉盆景一般多少钱35 梦见恋人给钱没要让我买饭他吃的预兆 讽刺人的笑话35 一开始感觉自己没了他会死,后来发现死也不想有他了。翻译法语是...1 只要学不死,就往死里学。谁能用法语翻译一下这句话。1 高血脂容易导致哪些病2 宋一夫的白藜芦醇可以治疗肺癌晚期吗 非师范类怎么报考教师资格证?758 手提电脑如何与多媒体连接?7 杭州—富阳有多少公里?11 我爱你一生一世翻译成法文13 一年级看图说话下雨两个人打雨伞314 米小圈和铁头去散步,这时天空下起了雨,只有铁头带了伞,请问谁...7 跪求、郭敬明金典语录〈各类小说里的〉 要 许多许多,不要 常...13 高血脂会引起高血压吗21 上海的男子医院有哪些 上海有哪些男子医院?求问一家! 被别人注销该怎么办? 白藜芦醇的用量是多少? 女孩做软件测试怎么样啊?2 求作业答案:有位哲人说得好,一种 erp沙盘模拟实训中每年应该怎么做112 如何把笔记本连入多媒体?