找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

c語言可以在子程序里面再定義外部寄存器變量嗎

查看數(shù): 2125 | 評論數(shù): 9 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2022-8-30 12:04

正文摘要:

請教下大家,我現(xiàn)在在子程序里面又定義了個外部寄存器的變量,發(fā)現(xiàn)這個寄存器很容易被篡改成其它的亂碼值,定義寄存器一定要寫在開頭嗎?

回復(fù)

ID:1043824 發(fā)表于 2022-9-4 21:24
對,局部變量有它的生存期,不能亂定義
ID:883242 發(fā)表于 2022-9-4 17:41
fj51hei 發(fā)表于 2022-8-31 11:53
外部變量算全局變量?放子程序里定義有什么目的?

c語言有個bug,就是如果你定義了一個全局變量,比如i,那么在這個全局變量有效作用范圍內(nèi),你還可以定義一個局部變量i,在函數(shù)內(nèi)部使用的是局部變量i,這也算是一個可能進(jìn)去的坑。
ID:712493 發(fā)表于 2022-8-31 11:53
外部變量算全局變量?放子程序里定義有什么目的?
ID:1043338 發(fā)表于 2022-8-30 16:43
yes 必須這樣
ID:68189 發(fā)表于 2022-8-30 15:06
子程序中定義的變量是局部變量 ,局部變量,也稱內(nèi)部變量,是指在一個函數(shù)內(nèi)部或復(fù)合語句內(nèi)部定義的變量。 局部變量的生存期:從函數(shù)被調(diào)用的時刻算起到函數(shù)返回調(diào)用處的時刻結(jié)束。所以,子程序執(zhí)行完畢后,局部變量就自動消亡了,這時局部變量的值是什么,誰也不知道了......這就是你說的亂碼......
ID:59202 發(fā)表于 2022-8-30 14:37
請教下大家,我現(xiàn)在在子程序里面又定義了個外部寄存器的變量,發(fā)現(xiàn)這個寄存器很容易被篡改成其它的亂碼值,定義寄存器一定要寫在開頭嗎?
“定義了個外部寄存器的變量”是什么意思,在子程序里定義的變量叫局部變量,只能在子程序里使用,如果在子程序外部定義的全局變量可以直接使用或用extern聲明后使用
ID:883242 發(fā)表于 2022-8-30 14:04
子程序里面的變量叫局部變量,而每次進(jìn)入函數(shù),局部變量的值都是不確定的。
ID:404160 發(fā)表于 2022-8-30 13:30
這個i變量所占寄存器位置,推出子程序,會重新分配被其它變量使用。所以會亂碼
ID:1034262 發(fā)表于 2022-8-30 13:29
不要玩非典型用法。寄存器都是在頭文件定義好的。

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表