![]() |
發布時間: 2022-8-30 12:04
正文摘要:請教下大家,我現在在子程序里面又定義了個外部寄存器的變量,發現這個寄存器很容易被篡改成其它的亂碼值,定義寄存器一定要寫在開頭嗎? |
對,局部變量有它的生存期,不能亂定義 |
fj51hei 發表于 2022-8-31 11:53 c語言有個bug,就是如果你定義了一個全局變量,比如i,那么在這個全局變量有效作用范圍內,你還可以定義一個局部變量i,在函數內部使用的是局部變量i,這也算是一個可能進去的坑。 |
外部變量算全局變量?放子程序里定義有什么目的? |
yes 必須這樣 |
子程序中定義的變量是局部變量 ,局部變量,也稱內部變量,是指在一個函數內部或復合語句內部定義的變量。 局部變量的生存期:從函數被調用的時刻算起到函數返回調用處的時刻結束。所以,子程序執行完畢后,局部變量就自動消亡了,這時局部變量的值是什么,誰也不知道了......這就是你說的亂碼...... |
請教下大家,我現在在子程序里面又定義了個外部寄存器的變量,發現這個寄存器很容易被篡改成其它的亂碼值,定義寄存器一定要寫在開頭嗎? |
子程序里面的變量叫局部變量,而每次進入函數,局部變量的值都是不確定的。 |
這個i變量所占寄存器位置,推出子程序,會重新分配被其它變量使用。所以會亂碼 |
不要玩非典型用法。寄存器都是在頭文件定義好的。 |