新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機(jī)c語言教程:C51運(yùn)算符和表達(dá)式(指針和地址運(yùn)算符)

單片機(jī)c語言教程:C51運(yùn)算符和表達(dá)式(指針和地址運(yùn)算符)

作者: 時間:2012-09-12 來源:網(wǎng)絡(luò) 收藏

我們學(xué)習(xí)數(shù)據(jù)類型時,學(xué)習(xí)過類型,知道它是一種存放指向另一個數(shù)據(jù)的的變量類型。C中一個十分重要的概念,也是學(xué)習(xí)C中的一個難點(diǎn)。對于將會在第九課中做詳細(xì)的講解。在這里我們先來了解一下C中供給的兩個專門用于指針和符:

本文引用地址:http://m.butianyuan.cn/article/170885.htm

* 取內(nèi)容

取內(nèi)容和地址的一般形式分別為:

變量 = * 指針變量 指針變量 = 目標(biāo)變量

取內(nèi)容是將指針變量所指向的目標(biāo)變量的值賦給左邊的變量;取地址是將目標(biāo)變量的地址賦給左邊的變量。要注意的是:指針變量中只能存放地址(也就是指針型數(shù)據(jù)), 一般情況下不要將非指針類型的數(shù)據(jù)賦值給一個指針變量。

下面來看一個例子,并用一個圖表和實(shí)例去簡單理解指針的使用方法和含義。

設(shè)有兩個 unsigned int 變量 ABC 處 CBA 存放在 0x0028,0x002A 中 另有一個指針變量 portA 存放在 0x002C 中 那么我們寫這樣一段程序去看看*,的運(yùn)算結(jié)果

unsigned int data ABC _at_ 0x0028; unsigned int data CBA _at_ 0x002A; unsigned int data *Port _at_ 0x002C;

#include at89x51.h>

#include stdio.h>

void main(void)

{

SCON = 0x50; //串行口方式 1,允許接收 TMOD = 0x20; //定時器 1 定時方式 2

TH1 = 0xE8; //11.0592MHz 1200 波特率 TL1 = 0xE8;

TI = 1;

TR1 = 1; //啟動定時器

ABC = 10; //設(shè)初值 CBA = 20;

Port = CBA; //取 CBA 的地址放到指針變量 Port

*Port = 100; //更改指針變量 Port 所指向的地址的內(nèi)容

printf(1: CBA=%dn,CBA); //顯示此時 CBA 的值

Port = ABC; //取 ABC 的地址放到指針變量 Port

CBA = *Port; //把當(dāng)前 Port 所指的地址的內(nèi)容賦給變量 CBA

printf(2: CBA=%dn,CBA); //顯示此時 CBA 的值

printf( ABC=%dn,ABC); //顯示 ABC 的值

}

程序初始時

地址

說明

0x00

0x002DH

0x00

0x002CH

0x00

0x002BH

0x00

0x002AH

0x0A

0x0029H

0x00

0x0028H

執(zhí)行 ABC = 10;向 ABC 所指的地址 0x28H 寫入 10(0xA),因 ABC 是 int 類型要占用 0x28H 和

0x29H 兩個字節(jié)的內(nèi)存空間,低位字節(jié)會放入高地址中,所以 0x28H 中放入 0x00,0x29H 中 放入 0x0A

地址

說明

0x00

0x002DH

0x00

0x002CH

0x00

0x002BH

0x00

0x002AH

0x0A

0x0029H

ABC 為 int 類型占用兩字節(jié)

0x00

0x0028H

c語言相關(guān)文章:c語言教程



上一頁 1 2 3 4 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉