標題: c語言可以在子程序里面再定義外部寄存器變量嗎 [打印本頁]

作者: fffhaha    時間: 2022-8-30 12:04
標題: c語言可以在子程序里面再定義外部寄存器變量嗎
請教下大家,我現(xiàn)在在子程序里面又定義了個外部寄存器的變量,發(fā)現(xiàn)這個寄存器很容易被篡改成其它的亂碼值,定義寄存器一定要寫在開頭嗎?

1661832259113.jpg (656 Bytes, 下載次數(shù): 67)

1661832259113.jpg

作者: coody_sz    時間: 2022-8-30 13:29
不要玩非典型用法。寄存器都是在頭文件定義好的。
作者: 飛云居士    時間: 2022-8-30 13:30
這個i變量所占寄存器位置,推出子程序,會重新分配被其它變量使用。所以會亂碼
作者: Hephaestus    時間: 2022-8-30 14:04
子程序里面的變量叫局部變量,而每次進入函數(shù),局部變量的值都是不確定的。
作者: xxxevery    時間: 2022-8-30 14:37
請教下大家,我現(xiàn)在在子程序里面又定義了個外部寄存器的變量,發(fā)現(xiàn)這個寄存器很容易被篡改成其它的亂碼值,定義寄存器一定要寫在開頭嗎?
“定義了個外部寄存器的變量”是什么意思,在子程序里定義的變量叫局部變量,只能在子程序里使用,如果在子程序外部定義的全局變量可以直接使用或用extern聲明后使用

作者: wpppmlah    時間: 2022-8-30 15:06
子程序中定義的變量是局部變量 ,局部變量,也稱內(nèi)部變量,是指在一個函數(shù)內(nèi)部或復合語句內(nèi)部定義的變量。 局部變量的生存期:從函數(shù)被調(diào)用的時刻算起到函數(shù)返回調(diào)用處的時刻結(jié)束。所以,子程序執(zhí)行完畢后,局部變量就自動消亡了,這時局部變量的值是什么,誰也不知道了......這就是你說的亂碼......
作者: hs360024170    時間: 2022-8-30 16:43
yes 必須這樣
作者: fj51hei    時間: 2022-8-31 11:53
外部變量算全局變量?放子程序里定義有什么目的?
作者: Hephaestus    時間: 2022-9-4 17:41
fj51hei 發(fā)表于 2022-8-31 11:53
外部變量算全局變量?放子程序里定義有什么目的?

c語言有個bug,就是如果你定義了一個全局變量,比如i,那么在這個全局變量有效作用范圍內(nèi),你還可以定義一個局部變量i,在函數(shù)內(nèi)部使用的是局部變量i,這也算是一個可能進去的坑。
作者: yuqiu    時間: 2022-9-4 21:24
對,局部變量有它的生存期,不能亂定義




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1