

下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、摘要:一.指針變量的定義指針變量定義與一般變量的定義類似,其形式如下:數據類型*標識符;表示被定義為基于存儲器的指針,無此選項時,被定義為一般指針。這兩種指針的區別在于它們的存儲字節不同。一般指針在內存.一. 指針變量的定義指針變量定義與一般變量的定義類似,其形式如下:數據類型存儲器類型1*存儲器類型2標識符;存儲器類型1表示被定義為基于存儲器的指針,無此選項時,被定義為一般指針。這兩種指針的區別在于它們的存儲字節不同。一般指針在內存中占用三個字節,第一個字節存放該指針存儲器類型的編碼(由編譯時由編譯模式的默認值確定),第二和第三字節分別存放該指針的高位和低位地址偏移量。存儲器類型的編碼值如下
2、:存儲類型IIdata/data/bdataxdatapdataCode編碼值0x000x010xFE0xFF存儲類型2用于指定指針本身的存儲器空間。1. char*c_ptr;int*i_ptr;long*l_ptr;上述定義的是一般指針,c_ptr指向的是一個char型變量,那么這個char型變量位于哪里呢?這和編譯時由編譯模式的默認值有關,如果MenoryModelVariableLarge:XDATA,那么這個char型變量位于xdata區:如果MenoryModelVariableCompact:PDATA,那么這個char型變量位于pdata區:如果MenoryModelVaria
3、bleSmall:DATA,那么這個char型變量位于data區。而指針c_ptr,i_ptr,l_ptr變量本身位于片內數據存儲區中。2. char*datac_ptr;int*idatai_ptr;long*xdatal_ptr;上述定義,c_ptr,i_ptr,l_ptr變量本身分別位于data,idata,xdata區。3. chardata*c_ptr;表示指向的是data區中的char型變量,c_ptr在片內存儲區中;intxdata*i_ptr;表示指向的是xdata區中的int型變量,i_ptr在片內存儲區中;longcode*l_ptr;表示指向的是code區中的long型變
4、量,l_ptr在片內存儲區中;4.chardata*datac_ptr;表示指向的是data區中的char型變量,c_ptr在片內存儲區data中;Intxdata*idatai_ptr;表示指向的是xdata區中的int型變量,i_ptr在片外存儲區xdata中;longcode*xdatal_ptr;表示指向的是code區中的long型變量,l_ptr在片內存儲區xdata中;二. 指針應用1. intx,j;int*px,*py;px=&x;py=&y;2. *px=0;py=px;3. *px+<=>*(px+4. (*px+<=>x+5. un
5、signedcharxdata*x;unsingedcharxdata*y;x=0x0456;*x=0x34/等價于movdptr,#456h;mova,#34h;movxdptr,a6. unsignedcharpdata*x;x=0x045;*x=0x34/等價于movr0,#45h;mova,#34h;movxr0,a7. unsignedchardata*x;x=0x30;*x=0x34/等價于mova,#34h;mov30h,a8. int*px;px=(intxdata*0x4000;將xdata型指針0x4000賦給px,也就是將0x4000強制轉換為指向xdata區中的int型
6、變量的指針,將其賦給px。9. intx;x=*(charxdata*0x4000;/將0x4000強制轉換為指向xdata區中的int型變量的指針,從這個地址中取出值賦給變量x。10. px=*(intxdata*xdata*0x4000;/如何分析?11. px=*(intxdata*xdata*0x4000;將陰影部分遮蓋,這個意思就是將0x4000強制轉換為指向xdata區中的X型變量的指針,這個X型變量就是陰影“intxdata*",也就是0x4000指向的變量類型是一個指向xdata區中的int型變量的指針,即0x4000中放的是另外一個指針,這個指針指向的是xdata區
7、中的int型變量。Px值放的是0x4000中放的那個指針。比如【0x4000】一【0x2000】0x34。Px=0x2000。12. x=*(intxdata*xdata*0x4000;x中放著0x4000中放的那個指針所指向的值。比如【0x4000】一【0x200010x34。三. 指針與數組1.intarr10;int*pr;pr=arr;/等價于pr=&arr0;這樣的話,*(pr+1=arr1;*(pr+2=arr2;*(arr+3=arr3;*(arr+4=arr4;或者pr0,pr1.代表arr0,arr1.可以*pr+(等價于*(pr+,來訪問所有數組元素,W*arr+是
8、不行的。因為arr是常量,不能+運算2. char*s1charcodestr=”abcdefg”s1=str;3. char*s1=”abcdefg”;四. 指針與結構體1. typedefstruct_data_strunsignedintDATA110;unsignedintDATA210;unsignedintDATA310;unsignedintDATA410;unsignedintDATA510;unsignedintDATA610;unsignedintDATA710;unsignedintDATA810;DATA_STR;開辟一個外RAM空間,確保這個空間夠裝你所需要的xdat
9、aucharmy_dataMAX_STR_at_0x0000;DATA_STR*My_Str;My_Str=(DATA_STR*my_data;/把你的結構體指針指向這個數組的開頭以后的操作就這樣:My_Str->DATA10=xxx;My_Str->DATA11=xxx;那么你的變量就自然放到XDATA中去了.注意定義的my_dataMAX_STR,不能隨便被操作,它只是開始的時候用來開辟內存用的.2. structstudentcharname20;intnum;stu1,stu2;3. structstudentcharname20;intnum;;structstudent
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CCMA 0061-2018塔式起重機防碰撞裝置
- T/CCIA 0020-2024建筑衛生陶瓷行業雙承諾
- T/CCASC 1004-2023氯化聚氯乙烯企業安全風險隱患排查指南
- T/CAR 14-2023疫苗冷庫技術要求
- T/CAQI 273-2022水處理構筑物用鋼結構模塊
- 辦公助手考試題及答案
- opc面試題及答案
- 環保顧問考試題及答案
- 工商助理面試題及答案
- 傳統故事面試題及答案
- 縣分級診療疾病目錄
- 入職申請表(完整版)
- 萬達入職人才測評題答案
- 認識職業:醫生
- 國際音標卡片(打印版)
- 2023年四川省資陽中考英語真題(含答案)
- 石砌體結構房屋安全性鑒定課件
- 護理管理pdca的課件
- 客戶服務與問題解決技巧培訓
- 騰訊云安全運維
- (材料)綜合物性測量系統
評論
0/150
提交評論