久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1826|回復: 7
收起左側

51單片機的局部變量有生存周期這一說嗎,為什么我用KEIL4仿真時監控局部變量的值,

[復制鏈接]
ID:1063563 發表于 2023-10-7 13:16 | 顯示全部樓層 |閱讀模式
51單片機的局部變量有生存周期這一說嗎,為什么我用KEIL4仿真時監控局部變量的值,發現局部變量的數值一直不變都在呢,
不會變沒。MAIN函數大循環時局部變量的值一直都在。也不會變沒。

回復

使用道具 舉報

ID:277550 發表于 2023-10-7 13:31 | 顯示全部樓層
代碼如何的。

局部變量,任何域,就在當前范圍。
回復

使用道具 舉報

ID:1095261 發表于 2023-10-7 13:32 | 顯示全部樓層
沒有吧
回復

使用道具 舉報

ID:744809 發表于 2023-10-7 13:59 | 顯示全部樓層
main函數里定義的局部變量應該是一直都在的。其他函數的局部變量,會在函數返回時釋放
回復

使用道具 舉報

ID:883242 發表于 2023-10-7 14:15 | 顯示全部樓層
標準c語言的局部變量可以看《數據結構》遞歸那一章。

Keil c51不是標準c語言,不搞堆棧分配局部變量那一套,而是采用靜態分配,舉個栗子:

  1. f(){
  2. int i;
  3. }
  4. g(){
  5. int j,k;
  6. }
  7. main(){
  8. f();
  9. g();
  10. }
復制代碼


在這個例子里面,局部變量i和j會共享同一個RAM地址,k就剩下來了,沒有其他函數跟k共享同一個地址。
調用f()會改變g()的局部變量j的值,同樣的調用g()會改變f()的局部變量i的值,但是只要不調用g()那么沒有其他函數會改變k的值。
回復

使用道具 舉報

ID:1063563 發表于 2023-10-12 23:31 | 顯示全部樓層
Hephaestus 發表于 2023-10-7 14:15
標準c語言的局部變量可以看《數據結構》遞歸那一章。

Keil c51不是標準c語言,不搞堆棧分配局部變量那一 ...

為什么局部變量i和j會共享同一個RAM地址呢?
回復

使用道具 舉報

ID:883242 發表于 2023-10-13 05:37 | 顯示全部樓層
芯菲 發表于 2023-10-12 23:31
為什么局部變量i和j會共享同一個RAM地址呢?

編譯器分析出來的,i和j不會同時被使用,共享同一地址節約空間啊!當然你一定要用讓i和k共享同一空間也是可以的,你可以看最后生成的m51文件。
回復

使用道具 舉報

ID:77589 發表于 2023-10-13 14:01 | 顯示全部樓層
任何一個變量,都有生命周期,都有作用范圍。
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 九九在线精品 | 中文字幕2021 | 亚洲精品一区二区在线观看 | 国产精品一区一区三区 | 日韩视频在线观看免费 | 深夜福利免费 | 17c在线 | 国产黄色三级 | 黄色三级在线观看 | 日韩欧美在线视频观看 | 欧美日韩一区二区三区视频 | 中文字幕av一区二区 | 亚洲国产精品视频 | 国产又黄又猛 | 国产又粗又猛又黄又爽无遮挡 | 综合五月 | 激情高潮到大叫狂喷水 | 亚洲国产日韩在线 | 欧美1级片 | 中文字幕播放 | 亚洲一区二区三区免费 | 97精品在线 | 午夜88| 欧美激情视频一区二区三区 | 欧美在线小视频 | 日韩网站在线观看 | 国产人成一区二区三区影院 | 日韩午夜片 | 日本加勒比在线观看 | 好色婷婷 | 波多野结衣一区二区三区在线观看 | 久久新视频 | 国产高清在线观看 | av中文在线 | 青草av在线| 日本在线视频一区 | 国产免费一区二区三区最新不卡 | 天堂中文av| 日本美女性生活 | 久久国产精品99久久人人澡 | 久久久精品国产sm调教网站 |