标题: c语言可以在子程序里面再定义外部寄存器变量吗 [打印本页]

作者: fffhaha    时间: 2022-8-30 12:04
标题: c语言可以在子程序里面再定义外部寄存器变量吗
请教下大家,我现在在子程序里面又定义了个外部寄存器的变量,发现这个寄存器很容易被篡改成其它的乱码值,定义寄存器一定要写在开头吗?

1661832259113.jpg (656 Bytes, 下载次数: 67)

1661832259113.jpg

作者: coody_sz    时间: 2022-8-30 13:29
不要玩非典型用法。寄存器都是在头文件定义好的。
作者: 飞云居士    时间: 2022-8-30 13:30
这个i变量所占寄存器位置,推出子程序,会重新分配被其它变量使用。所以会乱码
作者: Hephaestus    时间: 2022-8-30 14:04
子程序里面的变量叫局部变量,而每次进入函数,局部变量的值都是不确定的。
作者: xxxevery    时间: 2022-8-30 14:37
请教下大家,我现在在子程序里面又定义了个外部寄存器的变量,发现这个寄存器很容易被篡改成其它的乱码值,定义寄存器一定要写在开头吗?
“定义了个外部寄存器的变量”是什么意思,在子程序里定义的变量叫局部变量,只能在子程序里使用,如果在子程序外部定义的全局变量可以直接使用或用extern声明后使用

作者: wpppmlah    时间: 2022-8-30 15:06
子程序中定义的变量是局部变量 ,局部变量,也称内部变量,是指在一个函数内部或复合语句内部定义的变量。 局部变量的生存期:从函数被调用的时刻算起到函数返回调用处的时刻结束。所以,子程序执行完毕后,局部变量就自动消亡了,这时局部变量的值是什么,谁也不知道了......这就是你说的乱码......
作者: hs360024170    时间: 2022-8-30 16:43
yes 必须这样
作者: fj51hei    时间: 2022-8-31 11:53
外部变量算全局变量?放子程序里定义有什么目的?
作者: Hephaestus    时间: 2022-9-4 17:41
fj51hei 发表于 2022-8-31 11:53
外部变量算全局变量?放子程序里定义有什么目的?

c语言有个bug,就是如果你定义了一个全局变量,比如i,那么在这个全局变量有效作用范围内,你还可以定义一个局部变量i,在函数内部使用的是局部变量i,这也算是一个可能进去的坑。
作者: yuqiu    时间: 2022-9-4 21:24
对,局部变量有它的生存期,不能乱定义




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1