那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

淺析C語言中的變量修飾符

朱老師物聯網大講堂 ? 2024-04-15 08:10 ? 次閱讀

一、修飾符類型


51單片機采用哈佛結構。內存空間編址有重疊。可以在不同總線上定義不同的變量。在KEIL C51中定義了data、idata、xdata、code幾種域修飾符。這些修飾符決定了變量訪問方式。

data:固定指前面0x00-0x7F的128個RAM,可以用acc直接讀寫,速度最快,生成的代碼也最小。

idata:固定指前面0x00-0xFF的256個RAM,其中前128和data的128完全相同,只是訪問的方式不同。

xdata:外部擴展RAM。

code:ROM

920b97e6-fabc-11ee-9118-92fbcf53809c.png

92020730-fabc-11ee-9118-92fbcf53809c.png

二、變量定義


對變量進行聲明時可以指定變量的存儲類型如:uchar data x和data uchar x相等,都是在片內RAM區分配一個字節的空間。

同樣對于指針變量的聲明,因涉及到指針變量本身的存儲位置和指針所指向的存儲位置不同而進行相應的存儲區類型關鍵字的聲明。

如下一句代碼,表示的是:指在RAM區分配一個指針變量(“*”號后的關鍵字的作用),而且這個指針本身指向xdata區(“*”前xdata關鍵字的作用)

921610b8-fabc-11ee-9118-92fbcf53809c.png

92020730-fabc-11ee-9118-92fbcf53809c.png

三、指針變量與存儲區域關系


定義如下變量:

9225e24a-fabc-11ee-9118-92fbcf53809c.png

第一種情況:是指在片內RAM分配一個指針變量(“*”號后的data關鍵字的作用),而且這個指針本身指向xdata區(“*”前xdata關鍵字的作用)。這種定義方式訪問效率最高。

922d1e70-fabc-11ee-9118-92fbcf53809c.png

第二種情況:是指在idata區域分配一個指針變量,指針變量指向xdata區域。這種訪問效率不如第一種。

9233a22c-fabc-11ee-9118-92fbcf53809c.png

第三種情況:是指在xdata區域分配一個指針變量,指針變量指向xdata區域。這種訪問效率不如第二種。

923a94a6-fabc-11ee-9118-92fbcf53809c.png

第四種情況:這種定義方式是錯誤,該指針變量只能訪問data區域,無法訪問xdata區域。

9248eb1e-fabc-11ee-9118-92fbcf53809c.png

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137712
  • 變量
    +關注

    關注

    0

    文章

    613

    瀏覽量

    28465
收藏 人收藏

    評論

    相關推薦

    C語言中賦值運算詳解

    C語言中,賦值運算用于將一個值賦給變量
    發表于 08-18 16:38 ?2209次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>賦值運算<b class='flag-5'>符</b>詳解

    “無注冊”修飾符如何防止變量被保存到CPU寄存器中?

    好的,我的意思是,我希望真正的內存位置(無論是全局的還是本地的,不是基于堆棧的,變量)都要更新,所以當中斷發生時,它會找到一個更新的值。我知道“寄存器”修飾符,但它正好相反。F我想做什么,我在文檔中
    發表于 10-09 11:09

    請問什么是正則表達式修飾符

    什么是正則表達式的修飾符
    發表于 11-04 06:10

    c語言中整數的取值范圍是多少

    c語言中整數的取值范圍,文章目錄1、整數的取值范圍2、版權聲明整數是我們生活中常用的數據類型,也是編程中常用的一種數據,C語言使用int關鍵字來定義整數
    發表于 07-20 07:50

    C51語言變量定義方式

    C51 語言變量定義定義方式:普通變量:(修飾符)數據類型 [存儲類型] 變量名 [= 值]指
    發表于 12-01 06:18

    HAL庫中__weak修飾符是什么?

    單片機系統時鐘是什么?HAL庫中__weak修飾符是什么?
    發表于 02-23 07:32

    探討一下C語言中的作用域局部變量

    作用域局部變量--local variable全局變量--global variable修飾符--storage description局部變量–local variable一般在{}
    發表于 02-28 06:00

    C語言中的volatile關鍵字

    volatile關鍵字是一種類型修飾符,用它聲明的類型變量表示可以被某些編譯器未知的因素更改。
    發表于 05-27 09:32 ?3282次閱讀

    C語言類型修飾符Const的教程使用說明

    Const也是應該廣泛的關鍵字,表示后面定義有可能是一個不變的常量,但是跟各種數據類型定義組合,能演變出復雜含義。常類型是指使用類型修飾符const說明的類型,常類型的變量或對象的值是不能被更新
    的頭像 發表于 09-20 09:37 ?3153次閱讀

    C語言類型修飾符Volatile的使用說明

    C語言是我們經常需要用到的語言C語言中的類型修飾符Volatile大家知道怎么使用嗎? vol
    的頭像 發表于 09-19 10:54 ?3587次閱讀

    一種修飾符能使變量在處理器復位而不被初始化

    有一種修飾符能使變量在處理器復位而不被初始化
    的頭像 發表于 03-14 15:01 ?4114次閱讀
    一種<b class='flag-5'>修飾符</b>能使<b class='flag-5'>變量</b>在處理器復位而不被初始化

    C51 單片機的 C 語言中變量定義與硬件之間的關系

    C51 語言變量定義定義方式:普通變量:(修飾符)數據類型 [存儲類型] 變量名 [= 值]指
    發表于 11-23 16:51 ?3次下載
    <b class='flag-5'>C</b>51 單片機的 <b class='flag-5'>C</b> <b class='flag-5'>語言中</b>的<b class='flag-5'>變量</b>定義與硬件之間的關系

    C語言中變量的作用域

    作用域局部變量--local variable全局變量--global variable修飾符--storage description局部變量–local variable一般在{}
    發表于 01-13 14:58 ?0次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b><b class='flag-5'>變量</b>的作用域

    Java四種訪問修飾符及訪問范圍

    public修飾的類、類屬變量及方法,包內及包外的任何類均可以訪問;任何情況下都可以訪問;如果一個類、類屬變量及方法沒有用任何修飾符,則其訪問權限為默認權限,只認包。同包下可以訪問,同
    的頭像 發表于 02-28 14:35 ?6736次閱讀

    快速掌握C語言關鍵字

    C語言中的32個關鍵字你知道多少個呢?根據關鍵字的作用分為四類:數據類型關鍵字、控制語句關鍵字、存儲類型關鍵字和其它關鍵字。1.1基本數據類型int:用于聲明整數類型的變量。char:用于聲明字符
    的頭像 發表于 07-06 08:04 ?420次閱讀
    快速掌握<b class='flag-5'>C</b><b class='flag-5'>語言</b>關鍵字
    博彩百家乐官网五2013124预测 | 网络赌博网站| 百家乐官网打鱼秘籍| 温州百家乐的玩法技巧和规则 | 大发888大赢家| 百家乐官网稳赢技法| 百家乐赌博筹| 澳门百家乐官网威尼斯| 诚信百家乐平台| 网上真钱麻将游戏| 做生意门口对着通道| 大发888棋牌游戏下载| 百家乐官网娱乐网77scs| 江西老虎机遥控器| 百家乐官网破解仪恒达| 大发888娱乐场怎么才能赢到钱| 线上百家乐官网| 加多宝百家乐的玩法技巧和规则| 百家乐官网也能赢钱么| 百家乐高级技巧| 百家乐官网投注心态| 鑫鼎百家乐的玩法技巧和规则| 关于百家乐官网概率的书| 博彩网百家乐的玩法技巧和规则 | 延吉市| 百家乐庄闲符号记| 百家乐官网折叠桌| 百家乐园是真的不| 送现金百家乐官网的玩法技巧和规则| 大发888娱乐城主页| 做生意容易成功的八字| 门头沟区| 玩百家乐怎么能赢呢| 七胜百家乐官网赌场娱乐网规则 | 百家乐博彩通网| 新加坡百家乐官网的玩法技巧和规则 | 百家乐官网有试玩的吗| 百家乐官网怎么才赢| 百家乐翻天下载| LV百家乐官网娱乐城| 百家乐官网玩法和技巧|