找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1165|回复: 9
收起左侧

c语言可以在子程序里面再定义外部寄存器变量吗

[复制链接]
ID:481105 发表于 2022-8-30 12:04 | 显示全部楼层 |阅读模式
请教下大家,我现在在子程序里面又定义了个外部寄存器的变量,发现这个寄存器很容易被篡改成其它的乱码值,定义寄存器一定要写在开头吗?
1661832259113.jpg
回复

使用道具 举报

ID:1034262 发表于 2022-8-30 13:29 | 显示全部楼层
不要玩非典型用法。寄存器都是在头文件定义好的。
回复

使用道具 举报

ID:404160 发表于 2022-8-30 13:30 | 显示全部楼层
这个i变量所占寄存器位置,推出子程序,会重新分配被其它变量使用。所以会乱码
回复

使用道具 举报

ID:883242 发表于 2022-8-30 14:04 | 显示全部楼层
子程序里面的变量叫局部变量,而每次进入函数,局部变量的值都是不确定的。
回复

使用道具 举报

ID:59202 发表于 2022-8-30 14:37 | 显示全部楼层
请教下大家,我现在在子程序里面又定义了个外部寄存器的变量,发现这个寄存器很容易被篡改成其它的乱码值,定义寄存器一定要写在开头吗?
“定义了个外部寄存器的变量”是什么意思,在子程序里定义的变量叫局部变量,只能在子程序里使用,如果在子程序外部定义的全局变量可以直接使用或用extern声明后使用
回复

使用道具 举报

ID:68189 发表于 2022-8-30 15:06 | 显示全部楼层
子程序中定义的变量是局部变量 ,局部变量,也称内部变量,是指在一个函数内部或复合语句内部定义的变量。 局部变量的生存期:从函数被调用的时刻算起到函数返回调用处的时刻结束。所以,子程序执行完毕后,局部变量就自动消亡了,这时局部变量的值是什么,谁也不知道了......这就是你说的乱码......
回复

使用道具 举报

ID:1043338 发表于 2022-8-30 16:43 | 显示全部楼层
yes 必须这样
回复

使用道具 举报

ID:712493 发表于 2022-8-31 11:53 来自手机 | 显示全部楼层
外部变量算全局变量?放子程序里定义有什么目的?
回复

使用道具 举报

ID:883242 发表于 2022-9-4 17:41 | 显示全部楼层
fj51hei 发表于 2022-8-31 11:53
外部变量算全局变量?放子程序里定义有什么目的?

c语言有个bug,就是如果你定义了一个全局变量,比如i,那么在这个全局变量有效作用范围内,你还可以定义一个局部变量i,在函数内部使用的是局部变量i,这也算是一个可能进去的坑。
回复

使用道具 举报

ID:1043824 发表于 2022-9-4 21:24 | 显示全部楼层
对,局部变量有它的生存期,不能乱定义
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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