找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2123|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:481105 發(fā)表于 2022-8-30 12:04 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
請教下大家,我現(xiàn)在在子程序里面又定義了個外部寄存器的變量,發(fā)現(xiàn)這個寄存器很容易被篡改成其它的亂碼值,定義寄存器一定要寫在開頭嗎?

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

1661832259113.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1034262 發(fā)表于 2022-8-30 13:29 | 只看該作者
不要玩非典型用法。寄存器都是在頭文件定義好的。
回復(fù)

使用道具 舉報

板凳
ID:404160 發(fā)表于 2022-8-30 13:30 | 只看該作者
這個i變量所占寄存器位置,推出子程序,會重新分配被其它變量使用。所以會亂碼
回復(fù)

使用道具 舉報

地板
ID:883242 發(fā)表于 2022-8-30 14:04 | 只看該作者
子程序里面的變量叫局部變量,而每次進入函數(shù),局部變量的值都是不確定的。
回復(fù)

使用道具 舉報

5#
ID:59202 發(fā)表于 2022-8-30 14:37 | 只看該作者
請教下大家,我現(xiàn)在在子程序里面又定義了個外部寄存器的變量,發(fā)現(xiàn)這個寄存器很容易被篡改成其它的亂碼值,定義寄存器一定要寫在開頭嗎?
“定義了個外部寄存器的變量”是什么意思,在子程序里定義的變量叫局部變量,只能在子程序里使用,如果在子程序外部定義的全局變量可以直接使用或用extern聲明后使用
回復(fù)

使用道具 舉報

6#
ID:68189 發(fā)表于 2022-8-30 15:06 | 只看該作者
子程序中定義的變量是局部變量 ,局部變量,也稱內(nèi)部變量,是指在一個函數(shù)內(nèi)部或復(fù)合語句內(nèi)部定義的變量。 局部變量的生存期:從函數(shù)被調(diào)用的時刻算起到函數(shù)返回調(diào)用處的時刻結(jié)束。所以,子程序執(zhí)行完畢后,局部變量就自動消亡了,這時局部變量的值是什么,誰也不知道了......這就是你說的亂碼......
回復(fù)

使用道具 舉報

7#
ID:1043338 發(fā)表于 2022-8-30 16:43 | 只看該作者
yes 必須這樣
回復(fù)

使用道具 舉報

8#
ID:712493 發(fā)表于 2022-8-31 11:53 來自觸屏版 | 只看該作者
外部變量算全局變量?放子程序里定義有什么目的?
回復(fù)

使用道具 舉報

9#
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,這也算是一個可能進去的坑。
回復(fù)

使用道具 舉報

10#
ID:1043824 發(fā)表于 2022-9-4 21:24 | 只看該作者
對,局部變量有它的生存期,不能亂定義
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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