一. 指針變量的定義
指針變量定義與一般變量的定義類似,其形式如下:
數(shù)據(jù)類型 [存儲器類型1] * [存儲器類型2] 標(biāo)識符;
[存儲器類型1] 表示被定義為基于存儲器的指針,無此選項時,被定義為一般指針。這兩種指針的區(qū)別在于它們的存儲字節(jié)不同。一般指針在內(nèi)存中占用三個字節(jié),第一個字節(jié)存放該指針存儲器類型的編碼(由編譯時由編譯模式的默認值確定),第二和第三字節(jié)分別存放該指針的高位和低位地址偏移量。存儲器類型的編碼值如下:
存儲類型I Idata/data/bdata xdata pdata Code 編碼值 0x00 0x01 0xFE 0xFF
[存儲類型2]用于指定指針本身的存儲器空間。
char * c_ptr; int * i_ptr; long * l_ptr;
上述定義的是一般指針,c_ptr指向的是一個char型變量,那么這個char型變量位于哪里呢?這和編譯時由編譯模式的默認值有關(guān),
如果Menory Model—Variable—Large:XDATA,那么這個char型變量位于xdata區(qū):
如果Menory Model—Variable—Compact:PDATA, 那么這個char型變量位于pdata 區(qū):
如果Menory Model——Variable——Small:DATA,那么這個char型變量位于data區(qū)。
而指針c_ptr, i_ptr, l_ptr變量本身位于片內(nèi)數(shù)據(jù)存儲區(qū)中。 char * data c_ptr; int * idata i_ptr; long * xdata l_ptr;
上述定義,c_ptr, i_ptr, l_ptr變量本身分別位于data ,idata,xdata區(qū)。 char data * c_ptr; //表示指向的是data區(qū)中的char型變量,c_ptr在片內(nèi)存儲區(qū)中;
int xdata * i_ptr; //表示指向的是xdata區(qū)中的int型變量,i_ptr在片內(nèi)存儲區(qū)中;
long code * l_ptr; //表示指向的是code區(qū)中的long型變量,l_ptr在片內(nèi)存儲區(qū)中; char data * data c_ptr; //表示指向的是data區(qū)中的char型變量,c_ptr在片內(nèi)存儲區(qū)data中;
Int xdata * idata i_ptr; //表示指向的是xdata區(qū)中的int型變量,i_ptr在片外存儲區(qū)xdata中;
long code * xdata l_ptr; //表示指向的是code區(qū)中的long型變量,l_ptr在片內(nèi)存儲區(qū)xdata中;
二. 指針應(yīng)用
int x, j;
int * px, *py;
px=&x; py=&y; *px=0; py=px; *px++<=>*(px++) (*px)++<=>x++ unsigned char xdata * x;
unsinged char xdata * y;
x=0x0456;
*x=0x34 //等價于 mov dptr,#456h ; mov a,#34h; movx @dptr,a unsigned char pdata * x;
x=0x045;
*x=0x34 //等價于 mov r0,#45h ; mov a,#34h; movx @r0,a unsigned char data * x;
x=0x30;
*x=0x34 //等價于 mov a,#34h; mov 30h ,a int *px;
px=(int xdata *)0x4000; //將 xdata 型指針 0x4000 賦給 px,也就是將0x4000強制轉(zhuǎn)換為指向xdata區(qū)中的int型變量的指針,將其賦給px。 int x;
x=*((char xdata *)0x4000); //將0x4000強制轉(zhuǎn)換為指向xdata區(qū)中的int型變量的指針,從這個地址中取出值賦給變量x。 px=*((int xdata * xdata *)0x4000); //如何分析? px=*((int xdata *xdata *)0x4000);將陰影部分遮蓋,這個意思就是將0x4000強制轉(zhuǎn)換為指向xdata區(qū)中的X型變量的指針,這個X型變量就是陰影“int xdata *”,也就是0x4000指向的變量類型是一個指向xdata區(qū)中的int型變量的指針,即0x4000中放的是另外一個指針,這個指針指向的是xdata區(qū)中的int型變量。Px值放的是0x4000中放的那個指針。比如【0x4000】—【0x2000】-0x34。Px=0x2000。 x=**((int xdata * xdata *)0x4000); x中放著0x4000中放的那個指針?biāo)赶虻闹怠1热纭?x4000】—【0x2000】-0x34。
三. 指針與數(shù)組
int arr[10];
int * pr;
pr=arr; // 等價于pr=&arr[0];
這樣的話,*(pr+1)==arr[1]; *(pr+2)==arr[2]; *(arr+3)==arr[3]; *(arr+4)==arr[4];
或者 pr[0],pr[1]….代表 arr[0],arr[1]…..
可以*pr++ (等價于*(pr++)),來訪問所有數(shù)組元素,而*arr++是不行的。因為arr是常量,不能++運算 char * s1
char code str[]=”abcdefg”
s1=str; char *s1=”abcdefg”;
四. 指針與結(jié)構(gòu)體
typedef struct _data_str {
unsigned int DATA1[10];
unsigned int DATA2[10];
unsigned int DATA3[10];
unsigned int DATA4[10];
unsigned int DATA5[10];
unsigned int DATA6[10];
unsigned int DATA7[10];
unsigned int DATA8[10];
}DATA_STR;
//開辟一個外RAM空間,確保這個空間夠裝你所需要的
xdata uchar my_data[MAX_STR] _at_ 0x0000;
DATA_STR *My_Str;
My_Str=(DATA_STR*)my_data; //把你的結(jié)構(gòu)體指針指向這個數(shù)組的開頭
以后的操作就這樣:
My_Str->DATA1[0]=xxx;
My_Str->DATA1[1]=xxx;
那么你的變量就自然放到XDATA中去了.
注意定義的my_data[MAX_STR],不能隨便被操作,它只是開始的時候用來開辟內(nèi)存用的. struct student
{
char name[20];
int num;
}stu1,stu2; struct student
{
char name[20];
int num;
};
struct student stu1,stu2;
struct student *p;
p=&stu1;
訪問成員方法:
A. stu1.num
B. (*p).num; //因為“.”的優(yōu)先級高于“*”所以要加括號。
C. P->num; struct student stu[10];
struct student * p;
p=stu;
上一篇:KEIL編譯器C51.EXE的問題
下一篇:51單片機電子時鐘C語言程序
推薦閱讀
史海拾趣
1974年,電子工程師Helmut Nolden先生在德國創(chuàng)立了EA Elektro-Automatik公司。初期,公司主要生產(chǎn)小型固定式和可調(diào)式電源,以滿足工業(yè)、實驗室和業(yè)余愛好者的需求。這些產(chǎn)品憑借穩(wěn)定的性能和合理的價格,在市場上逐漸獲得了認可。隨著技術(shù)團隊能力的逐漸提高和持續(xù)創(chuàng)新,EA Elektro-Automatik開始擴大產(chǎn)品線,滿足更多客戶的特定需求。
Focus科技股份有限公司(此處假設(shè)為一家虛構(gòu)的、與“焦點科技”類似的公司)自成立之初就專注于將傳統(tǒng)制造業(yè)與互聯(lián)網(wǎng)深度融合。隨著電子商務(wù)的興起,該公司于2005年推出了自己的外貿(mào)電商平臺“GlobalFocus”,旨在幫助中國供應(yīng)商直接觸達全球買家。通過持續(xù)的技術(shù)創(chuàng)新和平臺優(yōu)化,“GlobalFocus”迅速成為國際市場上知名的B2B采購平臺,吸引了大量海外采購商和國內(nèi)優(yōu)質(zhì)供應(yīng)商入駐。公司還積極拓展跨境物流、支付、金融等增值服務(wù),為中小企業(yè)提供了全方位的外貿(mào)解決方案。
Datalogic公司自成立以來,一直致力于技術(shù)創(chuàng)新。在1990年代,隨著電子行業(yè)的快速發(fā)展,對高精度數(shù)據(jù)采集和處理的需求日益增加。Datalogic憑借其深厚的技術(shù)積累,成功研發(fā)出一系列高性能的條碼掃描器和數(shù)據(jù)采集器,這些產(chǎn)品憑借其高效、穩(wěn)定的表現(xiàn),迅速在電子行業(yè)占據(jù)了一席之地。
隨著技術(shù)的不斷成熟和市場需求的增長,F(xiàn)CT electronic公司開始尋求市場擴張和多元化發(fā)展。公司決定將產(chǎn)品線拓展至剛撓結(jié)合板和撓性加熱器領(lǐng)域,以滿足不同客戶的需求。同時,F(xiàn)CT electronic公司還積極開拓國際市場,通過參加國際展覽、與海外企業(yè)合作等方式,逐漸在全球電子行業(yè)中樹立了品牌形象。
API Technologies一直將品質(zhì)管理作為公司的核心競爭力之一。公司建立了完善的質(zhì)量管理體系,從原材料采購到產(chǎn)品生產(chǎn)的每一個環(huán)節(jié)都進行嚴格的質(zhì)量控制。同時,公司還注重持續(xù)改進和優(yōu)化生產(chǎn)流程,提高生產(chǎn)效率和產(chǎn)品質(zhì)量。這些措施使得API Technologies的產(chǎn)品在市場上具有極高的口碑和競爭力。
隨著產(chǎn)品質(zhì)量的不斷提升和技術(shù)的不斷創(chuàng)新,Ericsson Power Modules開始積極拓展市場。公司不僅在歐洲市場取得了顯著成績,還逐步將業(yè)務(wù)拓展至亞洲、北美等地區(qū)。為了更好地服務(wù)全球客戶,Ericsson Power Modules在瑞典斯德哥爾摩設(shè)立了總部,并在中國、美國等地建立了生產(chǎn)基地和研發(fā)中心。這種全球化布局使得Ericsson Power Modules能夠更快速地響應(yīng)市場需求,提供更高效、更便捷的服務(wù)。
研究生畢業(yè)設(shè)計 設(shè)計題目 基于sopc技術(shù)的智能家居控制器 開提在即 我的畢業(yè)論文題目,還要嵌入uC/OS- II 大家可以提問可以發(fā)表意見。 我很明白以我的能力,能把uC/OS- II 嵌入就已經(jīng)很成功了… 查看全部問答∨ |
|
美資公司誠聘 Digital IC Design/verification Engineer Digital IC Design/verification Engineer LSI 上海研發(fā)中心高薪誠聘存儲通訊領(lǐng)域人才,薪水待遇優(yōu)厚,部分人員有出國培訓(xùn)機會。(部門內(nèi)部推薦) 有意者請將中英文簡歷發(fā)送至:asic_tapeout@hotmail.com State/Province/County : Shang ...… 查看全部問答∨ |
下面說下我個人的理解: PIN CS類似于常規(guī)FLYBACK MOSFET下的功率檢測(電流檢測)電阻,從DATASHEET上來看,有如下地方與CS這個PIN有關(guān): 1. Absolute Maximum Ratings: Cs pin input voltage: -0.3V---7V 2.Vth, 門限動作電 ...… 查看全部問答∨ |
各位大哥,有幾個關(guān)于skyeye的問題。 (1)聽說skyeye可以模擬硬件環(huán)境(包括一些外設(shè))是真的嗎? (2)winCE可以在skyeye上面使用嗎? (3)如果winCE不能用于skyeye模擬器,有什么支持winCE的能仿真外設(shè)的模擬器嗎? &nbs ...… 查看全部問答∨ |
shuiyan大俠: 您在我的另一個帖子中: “NOR是線性尋址的,所以其實是不需要初始化的。只是CE下有block設(shè)備的統(tǒng)一接口,所以會在eboot中將其按照標(biāo)準(zhǔn)block設(shè)備配置一下,定義好對應(yīng)的block size, page size, block num等等。換nor的話,這里會有 ...… 查看全部問答∨ |
學(xué)習(xí)dsp有沒有一些仿真軟件,仿真ti的dsp ccs能不能做到這一點?就是不要仿真器,直接在pc上仿真。 我們都沒錢,…… 像單片機那樣的有很多仿真工具,學(xué)習(xí)起來很方便。… 查看全部問答∨ |
|
求助:WINCE S3C2440 30萬像素攝像頭顯示出現(xiàn)多張相同的畫面平鋪是為什么? 具體情況:我用的LCD為800*600的屏,開發(fā)板為S3C2440,攝像頭驅(qū)動原先為130萬像素,現(xiàn)在我想弄成30萬像素,改可驅(qū)動,結(jié)果顯示在LCD上的畫面是多張相同的畫面平鋪,就是類似于電腦桌面,原先拉伸的圖片變?yōu)槠戒??請問這是怎么回事??我在注冊表中已經(jīng)把分辨 ...… 查看全部問答∨ |
在PDA上使用Platform Builder自定義的一個操作系統(tǒng),CE5.0的。裝上CE Star 2.5后,能夠使用拼音輸入法輸入漢字,但是不能手寫輸入。屏幕為觸摸屏。請高人指教,不勝感激!… 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 人形機器人馬拉松背后的思考,兆易創(chuàng)新如何賦能機器人產(chǎn)業(yè)
- 一種基于STM32的智能柜控制器設(shè)計
- 小型傾轉(zhuǎn)旋翼機的無刷直流電機驅(qū)動器設(shè)計
- 超高速攝影機電控系統(tǒng)設(shè)計
- 基于GPS自動授時的無線智能控制器的設(shè)計
- 基于PTR2000的無線氣象信息采集系統(tǒng)設(shè)計
- Microchip推出MEC175xB系列器件,為嵌入式控制器引入硬件 抗量子攻擊能力
- 無人飛行器機載穩(wěn)定云臺控制系統(tǒng)的設(shè)計
- 匠芯創(chuàng)推出面向具身智能高性能實時處理器M7000
- 吉利電池安全標(biāo)準(zhǔn)升級,“神盾金磚電池”有什么技術(shù)亮點?
- 中國汽車工程學(xué)會出臺全固態(tài)電池新標(biāo)準(zhǔn)
- Allegro如何用技術(shù)定義汽車電子新范式
- 恩智浦半導(dǎo)體推出汽車級開發(fā)平臺OrangeBox 2.0 旨在促進安全的汽車通信
- 三大上市公司加碼/跨界固態(tài)電池關(guān)鍵材料!
- 一大波全固態(tài)電池新產(chǎn)品來了!
- 欣旺達/瑞浦/恩捷/力華/杜爾······12大企業(yè)電池行業(yè)新品來襲
- 新唐科技發(fā)布第四代『GerdaTM』系列,車用HMI顯示IC產(chǎn)品開始量產(chǎn)
- 寧德時代的電+Momenta的腦,“智電雙極”重構(gòu)全球汽車格局
- 一文讀懂:固態(tài)電池產(chǎn)業(yè)鏈通覽