熱門: 51單片機(jī) | 24小時必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時間: 2022-8-30 12:04
正文摘要:請教下大家,我現(xiàn)在在子程序里面又定義了個外部寄存器的變量,發(fā)現(xiàn)這個寄存器很容易被篡改成其它的亂碼值,定義寄存器一定要寫在開頭嗎? |
對,局部變量有它的生存期,不能亂定義 |
fj51hei 發(fā)表于 2022-8-31 11:53 c語言有個bug,就是如果你定義了一個全局變量,比如i,那么在這個全局變量有效作用范圍內(nèi),你還可以定義一個局部變量i,在函數(shù)內(nèi)部使用的是局部變量i,這也算是一個可能進(jìn)去的坑。 |
外部變量算全局變量?放子程序里定義有什么目的? |
yes 必須這樣 |
子程序中定義的變量是局部變量 ,局部變量,也稱內(nèi)部變量,是指在一個函數(shù)內(nèi)部或復(fù)合語句內(nèi)部定義的變量。 局部變量的生存期:從函數(shù)被調(diào)用的時刻算起到函數(shù)返回調(diào)用處的時刻結(jié)束。所以,子程序執(zhí)行完畢后,局部變量就自動消亡了,這時局部變量的值是什么,誰也不知道了......這就是你說的亂碼...... |
請教下大家,我現(xiàn)在在子程序里面又定義了個外部寄存器的變量,發(fā)現(xiàn)這個寄存器很容易被篡改成其它的亂碼值,定義寄存器一定要寫在開頭嗎? |
子程序里面的變量叫局部變量,而每次進(jìn)入函數(shù),局部變量的值都是不確定的。 |
這個i變量所占寄存器位置,推出子程序,會重新分配被其它變量使用。所以會亂碼 |
不要玩非典型用法。寄存器都是在頭文件定義好的。 |
Powered by 單片機(jī)教程網(wǎng)