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

c语言工程里其它文件引用全局变量?

发布网友 发布时间:2022-04-01 14:58

我来回答

6个回答

热心网友 时间:2022-04-01 16:27

    在C语言中引用外部变量,一般使用extern关键字。举个例子如下:

//1.c 中定义一个变量g_a
int g_a = 100;

//2.c 中定义一个函数输出g_a
#include <stdio.h>
extern int g_a; //这里需要用extern说明g_a是一个外部全局变量
void f() {
    printf("%d\n", g_a);
}

//3.c main函数中调用f()
void f(); //声明函数f()
int main()
{
    f();
}

说明:在2.c中如果不使用extern关键字,则会出现编译错误提示。写入extern int g_a声明后,则编译成功。

热心网友 时间:2022-04-01 17:45

1. 可以。全局变量本身具有外部链接特性。extern list可以让编译器在编译时暂时用一个临时的标识符表示list,等到链接时去其他链接文件里找到正确的list的定义,并替换掉b.c中使用到的地方,最终相当于b.c中直接使用了a.c中的list。
2. 如果你的test_change里面确实有修改到的全局的test,那这里的test值就是test_change修改的值。
全局变量的作用域是整个源程序,它和静态变量一样都统一保存在全局静态存储区。因此对于整个源程序来说(包括a.c和b.c),只有一个test和list,在哪里对它进行修改,效果都是一样的。

热心网友 时间:2022-04-01 19:20

1.如何引用一个已经定义过的全局变量?   
答:extern  可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个编写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。
  
2.全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?   
答:可以,在不同的C文件中以static形式来声明同名全局变量。   可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错
3.通过下例要看出static全局变量与普通的全局变量有什么区别来?
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则*了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误

引用(有代码展示):http://blog.csdn.net/rwjlqn/archive/2010/01/21/5219655.aspx

参考资料:http://blog.csdn.net/rwjlqn/archive/2010/01/21/5219655.aspx

热心网友 时间:2022-04-01 21:11

在c语言中
关于多文件编译的问题,
可以这样理解
因为对于编译来说,最后编译的只有一个文件
文件的包含,我们可理解成,代码的直接插入。
a.c
…………
int list;
test_change(test);
…………
b.c
extern list;
int test;
test_change(test){}
…………
合起来呢,一种情况如下(b包含a)
int list;
test_change(test);
extern list;
int test;
test_change(test){}
全局变量保存在哪里~
程序运行时,所有全局变量都会在内存中分配到空间。而且持续到程序结束

热心网友 时间:2022-04-01 23:19

第一个问题那样做是可以的

第二个问题:因为test是全局变量,也就是说它是在程序没有运行之前就已经分配好地址了,以后每次用的时侯从地址里读就可以了,所有你每次用的test都是只是一个,改完再放回去,用的时侯再拿出来

热心网友 时间:2022-04-02 01:44

推荐用 Dev C++;
这个软件很好用,特别对于工程文件,界面也美观而易于操作
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
王卡专属免流包是什么意思 腾讯王卡专属流量是什么意思 人防临空墙排烟机房可以留洞吗? 瑞士转机的问题? 雅阁、第九代凯美瑞、迈腾,大空间的中级车推荐 云顶之弈双人排位介绍 金铲铲之战 金铲铲段位相差多少可以一起打? 现在上海办理居住证需要本人去吗 34周加5天是几个月 孕34周是几个月了 孕34周如何预防早产 很多人身上寒气比较重,都会通过艾灸来祛湿,可以天天艾灸吗?_百度... 西湖雷峰塔得名的由来 西湖雷峰塔在历史上有哪些名字? 请问杭州西湖的雷峰塔有几层? 杭州西湖,请问有雷峰塔? 杭州西湖雷锋塔的门票是多少? 雷峰塔遗址位于哪个地方? 百年前杭州老照片:原生态西湖风光,苏堤和雷峰塔今昔对比鲜明吗? 雷峰塔名字的由来? 从雷峰塔上可以看到西湖全景吗 雷峰塔为什么成了西湖十景中最为人津津乐道的名胜之一? 雷峰塔的门票是多少啊? 西湖十景之一的杭州雷峰塔,有着怎样的迷人景色? 梦见很高的山顶在下雨,山顶有一大池清水快要决堤了? 梦见在下雨天在山上,本意是旅游查可是免强爬到山顶看到好大的雨好不... 梦到自己在山顶,面前在下雨,自己站的地方却没有下雨,最后差点被雨水冲是怎么? 梦见老家山上突然喷水,然后就下大雨从房顶漏到家里? 梦见我和家人们去山上玩,突然 下雨了,下着下着就要涨洪水了,吓得 梦到和朋友爬山突然下雨而且还从山上往下淌浑水是什么意思? 晚上梦见自己和家人上山,山上下雨乱风,还有树? 艾灸可以天天做吗 艾灸时间长了好吗 艾灸能不能天天做? 艾灸能否天天灸? 艾灸适合什么样体质,可以天天做吗? 艾灸每天可以灸几次? 艾灸百会可以天天灸吗? 长期坚持艾灸有什么好处? 艾灸药灸能不能长期做? 天天艾灸行吗 艾灸每天几次?每次多长时间好? 芥菜怎么做好吃? 芥菜怎么做好吃,鲜香下饭的小炒芥菜 芥菜怎样煮才好吃啊? 怎样做芥菜好吃 怎样做芥菜最好吃? 芥菜怎么做好吃又简单 大叶芥菜怎么做好吃呢? 芥菜怎么煮好吃 怎么消除电脑屏幕中间出现的“菜单已锁”和“菜单解锁”? 联想电脑显示屏菜单已锁怎么解锁