Ⅰ 闈欐佸彉閲忓湪鍐呭瓨涓瀛樻斁鐨勪綅緗鏄
闈欐佸彉閲忓湪鍐呭瓨涓瀛樻斁鐨勪綅緗鏄鏍堝尯銆
C璇璦涓瀹氫箟鐨勯潤鎬佸彉閲忓瓨鏀懼湪鏍堝尯錛屽姩鎬佸垎閰嶇殑鍐呭瓨絀洪棿浣嶄簬鍫嗗尯銆傞潤鎬佸彉閲忓湪鍐呭瓨絀洪棿涓鍙鏈変竴浠斤紝琚綾葷殑澶氫釜瀵硅薄鍏變韓銆
灞閮ㄥ彉閲忓湪鏍堢┖闂翠笂鍒嗛厤錛岃繖涓灞閮ㄥ彉閲忔墍鍦ㄧ殑鍑芥暟琚澶氭¤皟鐢ㄦ椂錛屾瘡嬈¤皟鐢ㄨ繖涓灞閮ㄥ彉閲忓湪鏍堜笂鐨勪綅緗閮戒笉涓瀹氱浉鍚屻傚矓閮ㄥ彉閲忎篃鍙浠ュ湪鍫嗕笂鍔ㄦ佸垎閰嶏紝浣嗘槸璁板緱浣跨敤瀹岃繖涓鍫嗙┖闂村悗瑕侀噴鏀句箣銆
鍏ㄥ矓鍙橀噺鍏ㄩ儴瀛樻斁鍦ㄩ潤鎬佸瓨鍌ㄥ尯錛屽湪紼嬪簭寮濮嬫墽琛屾椂緇欏叏灞鍙橀噺鍒嗛厤瀛樺偍鍖猴紝紼嬪簭琛屽畬姣曞氨閲婃斁銆傚湪紼嬪簭鎵ц岃繃紼嬩腑瀹冧滑鍗犳嵁鍥哄畾鐨勫瓨鍌ㄥ崟鍏冿紝鑰屼笉鍔ㄦ佸湴榪涜屽垎閰嶅拰閲婃斁銆
闈欐佸彉閲忕殑甯擱噺浣跨敤
闈欐佸彉閲忎篃鍙浠ョ敤浜庡瓨鍌ㄥ父鏁般傚叿浣撴潵璇達紝闈欐佸彉閲忥紙鍏ㄥ矓鍙橀噺鍙婃眹緙栬璦閲屽畾涔夌殑絎﹀彿浜﹀悓錛夊彲鐢╟onst錛宑onstant鎴杅inal錛堟牴鎹璇璦鍐沖畾錛夌瓑鍏抽敭瀛楁爣璇嗭紝榪欐椂鍏跺煎氨浼氬湪緙栬瘧鏃惰懼畾錛屽苟涓旀棤娉曞湪榪愯屾椂鏀瑰彉銆
緙栬瘧鍣ㄩ氬父灝嗛潤鎬佸父閲忎笌鏂囨湰涓璧風疆浜庣洰鏍囨枃浠剁殑鏂囨湰鍖哄煙錛岃岄潪甯擱噺鍒濆嬪寲鏁版嵁鍒欑疆浜庢暟鎹鍖猴紱鑰屽傝嫢鏈夐渶瑕侊紝鏈変簺緙栬瘧鍣ㄨ繕鍙閫夋嫨涓哄叾寮杈熶笓鐢ㄥ尯錛涗負闃叉㈠父鏁板彉閲忚閿欒鐨勬寚閽堝啓鍏ヨ嗙洊錛屼害鍙鍦ㄨ繖鍧楀尯鍩熷惎鐢ㄥ唴瀛樹繚鎶ゆ満鍒躲
Ⅱ 51單片機定義變數時默認是存儲到哪裡的
未顯式聲明的情況下,變數會根據Memory Model的設置,默認分配在指定的存儲區。
Small模式:默認分配在data區
Compact模式:默認分配在pdata區
Large模式:默認分配在xdata區
新建工程默認都是Small模式,所以未顯式聲明存儲區域的變數都會分配在data區的。所以才會容易出現data區擠爆、編譯器跳著腳讓你把變數分到idata區去……
Ⅲ 紼嬪簭鐨勫矓閮ㄥ彉閲 鍏ㄥ矓鍙橀噺 鍔ㄦ佺敵璇鋒暟鎹鍒嗗埆瀛樺偍鍦ㄤ粈涔堝湴鏂
紼嬪簭鐨勫矓閮ㄥ彉閲忓叏灞鍙橀噺鍔ㄦ佺敵璇鋒暟鎹鍒嗗埆瀛樺偍鍦ㄦ爤閲屻
鏅閫氬矓閮ㄥ彉閲忓湪鍫嗘爤絀洪棿涓婂垎閰嶏紝褰撳矓閮ㄥ彉閲忕殑鍑芥暟琚澶氭¤皟鐢ㄦ椂錛屽矓閮ㄥ彉閲忔瘡嬈″湪鍫嗘爤涓婄殑浣嶇疆閮戒笉鐩稿悓銆傝繕鍙浠ュ湪鍫嗕笂鍔ㄦ佸垎閰嶅矓閮ㄥ彉閲忥紙malloc錛夛紝浣嗘槸瑕佽頒綇鍦ㄨ楀敖鍫嗙┖闂村悗閲婃斁zd銆
鍐呭瓨鍒嗛厤涓婄殑鏍堢┖闂存椂瑕佹敞鎰忓唴瀛樼殑錛屼笉鑳藉垎閰嶅お澶氱殑鍐呭瓨銆傚傛灉鍫嗘爤涓鐨勭┖闂村皬浜庤鋒眰鐨勭┖闂村ぇ灝忥紝鍒欑郴緇熷皢鏄劇ず鍫嗘爤婧㈠嚭騫剁粰鍑虹浉搴旂殑寮傚父淇℃伅銆備絾鍫嗕笉鍚岋紝鍫嗗彲鍒嗛厤絀洪棿寰堝ぇ銆
鎵╁睍璧勬枡錛
娉ㄦ剰浜嬮」錛
瀵瑰矓閮ㄥ彉閲忚繘琛屽垎綾
1錛庝綅緗錛緙栬瘧鍣灝嗛潤鎬佸矓閮ㄥ彉閲忔斁鍦ㄥ叏灞瀛樺偍鍖哄煙涓銆傛暟鎹錛屽洜姝ゅ敖綆″畠鏄鏈鍦扮殑錛屼絾瀹冨瓨鍦ㄤ簬紼嬪簭鐨勬暣涓鐢熷懡鍛ㄦ湡涓錛堝畠鍦ㄥ畾涔夋椂浜х敓錛屽苟闅忕潃紼嬪簭鐨勭粨鏉熻岀粨鏉燂級銆
2錛庤塊棶鏉冮檺錛氶潤鎬佸矓閮ㄥ彉閲忓彧鑳界敱鍏朵綔鐢ㄥ煙鍐呯殑鍙橀噺鎴栧嚱鏁拌塊棶銆備篃灝辨槸璇達紝灝界″畠灝嗗瓨鍦ㄤ簬紼嬪簭鐨勬暣涓鐢熷懡鍛ㄦ湡涓錛屼絾鏄鍏朵粬鍑芥暟鍜婧愭枃浠涓嶈兘璁塊棶瀹冿紝鍥犱負瀹冩槸闈欐佺殑銆
3錛庡礆細濡傛灉鐢ㄦ埛娌℃湁鍒濆嬪寲闈欐佸矓閮ㄥ彉閲忥紝緙栬瘧鍣ㄤ細鑷鍔ㄥ皢鍏惰祴鍊間負0錛屾瘡嬈¤皟鐢ㄩ潤鎬佸矓閮ㄥ彉閲忔椂閮戒細浣跨敤鏈鍚庝竴嬈¤皟鐢ㄥ悗鐨勫箋