OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5086|回复: 8

请教一下如何把一个.C文件里定义的变量赋值在其他.C文件里用这个值

[复制链接]

41

主题

113

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2016-6-12
在线时间
61 小时
发表于 2016-9-2 16:19:34 | 显示全部楼层 |阅读模式
1金钱
如题。。。请教一下如何把一个.C文件里定义的赋值了的变量在其他.C文件里用这个值,我在一个.C文件里的函数读取了一些数据,想在其他.C文件里用这些数据,要怎么做啊?大虾们谢谢啦!!!

最佳答案

查看完整内容[请看2#楼]

局部变量才会在退出函数之后失效,全局变量不会。因为局部变量是在栈里面的。 百度了一个解释: 静态存储方式:是指在程序运行期间分配固定的存储空间的方式。 动态存储方式:是在程序运行期间根据需要进行动态的分配存储空间的方式。 用户存储空间可以分为三个部分: 1) 程序区; 2) 静态存储区; 3) 动态存储区; 全局变量全部存放在静态存储区,在程序开始执行时给全 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

548

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1383
金钱
1383
注册时间
2015-2-3
在线时间
197 小时
发表于 2016-9-2 16:19:35 | 显示全部楼层
LVZHENHAI 发表于 2016-9-2 16:45
我先全局定义一个数组,但是我得在函数里面对它进行赋值,让他保存数据,然后我要在其他.C文件调用这些数 ...

局部变量才会在退出函数之后失效,全局变量不会。因为局部变量是在栈里面的。

百度了一个解释:
静态存储方式:是指在程序运行期间分配固定的存储空间的方式。

动态存储方式:是在程序运行期间根据需要进行动态的分配存储空间的方式。



用户存储空间可以分为三个部分:

1)       程序区;

2)       静态存储区;

3)       动态存储区;





全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完毕就释放。在程序执行过程中它们占据固定的存储单元,而不动态地进行分配和释放;



动态存储区存放以下数据:

1)       函数形式参数;

2)       自动变量(未加static声明的局部变量);

3)       函数调用实的现场保护和返回地址;

对以上这些数据,在函数开始调用时分配动态存储空间,函数结束时释放这些空间。
回复

使用道具 举报

3

主题

261

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2075
金钱
2075
注册时间
2014-2-20
在线时间
284 小时
发表于 2016-9-2 16:21:39 | 显示全部楼层
用extern
回复

使用道具 举报

3

主题

548

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1383
金钱
1383
注册时间
2015-2-3
在线时间
197 小时
发表于 2016-9-2 16:31:20 | 显示全部楼层
二楼正解,举例如下
文件A.c:
[mw_shl_code=c,true]char str="Hello world!";//必须是全局变量[/mw_shl_code]
文件B:
[mw_shl_code=c,true]extern char str[];

void func(void)
{
    printf("%s",str);
}[/mw_shl_code]
回复

使用道具 举报

41

主题

113

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2016-6-12
在线时间
61 小时
 楼主| 发表于 2016-9-2 16:32:45 | 显示全部楼层

我试过了用extern 声明 ,可是没有保留下来原.C文件保存的数据啊,能不能保存?还是我程序写错了?
回复

使用道具 举报

9

主题

100

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1513
金钱
1513
注册时间
2016-7-28
在线时间
302 小时
发表于 2016-9-2 16:32:59 | 显示全部楼层
extern 变量类型 变量名 声明
回复

使用道具 举报

4

主题

290

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1130
金钱
1130
注册时间
2015-8-4
在线时间
107 小时
发表于 2016-9-2 16:44:03 | 显示全部楼层
肯定是你的变量名没整对,变量要在文件头部声明,不要在函数内部声明。引用该变量的文件在头部用extern引用,才可以。
好好检查下代码,肯定哪儿不对。
活到老,学到老。
回复

使用道具 举报

41

主题

113

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2016-6-12
在线时间
61 小时
 楼主| 发表于 2016-9-2 16:45:41 | 显示全部楼层
yyx112358 发表于 2016-9-2 16:31
二楼正解,举例如下
文件A.c:
[mw_shl_code=c,true]char str="Hello world!";//必须是全局变量[/mw_shl_c ...

我先全局定义一个数组,但是我得在函数里面对它进行赋值,让他保存数据,然后我要在其他.C文件调用这些数据啊,在函数里面赋的值不是局部有效么
回复

使用道具 举报

3

主题

261

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2075
金钱
2075
注册时间
2014-2-20
在线时间
284 小时
发表于 2016-9-2 16:47:31 | 显示全部楼层
LVZHENHAI 发表于 2016-9-2 16:45
我先全局定义一个数组,但是我得在函数里面对它进行赋值,让他保存数据,然后我要在其他.C文件调用这些数 ...

你在变量是全局的,在哪里赋值都全局有效。建议你po上代码看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-28 07:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表