freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[工程科技]c8051第3章幻燈(編輯修改稿)

2025-02-15 12:32 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 字符數(shù)組: char chb[ ]={“china shanxi taiyuan”}; //編譯器還將在字符串常量后加結(jié)束符號(hào)“ \0” 二維數(shù)組初始化: char chb[3][25]={{“china shanxi taiyuan”}, {“TUT ”}, {“AUTO”}}; 指針 1. 指針的基本概念 對(duì)于變量來說,變量名是數(shù)據(jù)的名字;變量的值是數(shù)據(jù)。 指針就是變量的地址,又稱為變量的指針,簡(jiǎn)稱指針。 為操作指針,常將指針用變量表示,稱為指針變量。為使用指針變量,需要在使用之前定義指針變量,格式為: 類型標(biāo)識(shí)符 *指針變量; 例如: char *xp。 int * yp。 unsigned char *my_ptr,*anther_ptr。 unsigned int *int_ptr。 指針變量前的“ *“只是表明該變量是個(gè)指針,以區(qū)別于一般變量。指針變量前的類型標(biāo)識(shí)符說明指針指向的變量類型。 定義好的指針變量為空,因?yàn)闆]有指向任何變量。因此變量與指針變量定義后,還需要指針變量指向變量。指針變量取變量地址是通過取地址運(yùn)算符 amp。實(shí)現(xiàn)的。 例如: unsigned char *xp。 unsigned char j, y; 則語句 xp=amp。j;將變量 j的地址賦予指針變量 xp。 一旦指針變量取得了變量地址,就可以通過指針和指針變量到內(nèi)存中存取變量了。 例如:若將變量 j的值直接賦予 y,通常使用的語句為: y=j;但是,采用指針變量的語句為: y=*xp;就是先從指針變量 xp中取出變量 j的地址,再?gòu)淖兞?j的地址中取出變量的值,然后賦給變量 y。 這里 *為指針運(yùn)算符(又稱為間接訪問符)。表明指針?biāo)赶虻淖兞俊? 若是有如下定義: unsigned char *yp。 unsigned char k; 而且, yp=amp。k; 則: *yp就是 k; amp。*yp就是 amp。k; *amp。k就是 k。 2. 數(shù)組指針與指向數(shù)組的指針變量 數(shù)組的指針指向數(shù)組的首地址,指向數(shù)組的指針變量,就是一個(gè)變量,該變量中保存數(shù)組首地址。 若有如下定義: define uchar unsigned char uchar y[10]。 //定義數(shù)組 uchar *yp。 //定義指針 uchar j; //定義變量 j 則有: yp=amp。y[0]; //使指針變量 yp得到數(shù)組 y的首地址 還可以: yp=y; //因?yàn)閿?shù)組名代表數(shù)組的首地址 也可以: uchar *yp=amp。y[0]。 在定義指針時(shí),使其獲得數(shù)組首地址 uchar y=[10]; 通常引用數(shù)組的方法是下標(biāo)法,例如引用數(shù)組第 4個(gè)元素,可以寫為 y[3]。也可以采用指針法,如果 yp是數(shù)組 y[10]的首地址,則 yp+j就是數(shù)組元素 y[j]的地址,指向數(shù)組 y的第 j個(gè)元素。而 *( yp+j)指向數(shù)組元素 y[j]。 *( yp+j)與 yp[j]等價(jià)。 若指針變量 yp已經(jīng)指向數(shù)組 y的第一個(gè)元素( yp=y;),則有 yp++;指向數(shù)組的下一個(gè)元素 y[1]。 3. C51中的指針 ( 1)基于存儲(chǔ)器的指針 基于存儲(chǔ)器的指針以存儲(chǔ)器類型為參量,對(duì)于 idata *, data *和 pdata *為 1個(gè)字節(jié),對(duì)于 code *和 xdata *為兩個(gè)字節(jié)。 例如, char xdata *xp; //定義了在 xdata存儲(chǔ)器中指向 char類型變量的指針,該指針長(zhǎng)度為 2個(gè)字節(jié)。 char data * str。 //str指向 data區(qū)中 char型數(shù)據(jù)。 結(jié)構(gòu)體 將互相關(guān)聯(lián)的不同類型的數(shù)據(jù)組合在一起就是結(jié)構(gòu)型數(shù)據(jù)。例如,要保存一組采樣值:時(shí)間(月、日、時(shí)、分)、溫度、流量等。應(yīng)該首先定義結(jié)構(gòu)數(shù)據(jù)類型,然后再定義結(jié)構(gòu)數(shù)據(jù)類型的變量。 1. 定義結(jié)構(gòu)數(shù)據(jù)類型與變量 ( 1)先定義結(jié)構(gòu)數(shù)據(jù)類型,再定義變量 格式如下: struct 結(jié)構(gòu)名 { 結(jié)構(gòu)成員說明 }; 結(jié)構(gòu)成員說明的格式為: 類型標(biāo)識(shí)符 成員名; 例如:定義名為 time的結(jié)構(gòu)數(shù)據(jù)類型如下 : struct time { unsigned char hour。 unsigned char min。 unsigned char sec } 則可以定義 time類型的時(shí)間變量 t t2如下: time t1, t2; //定義 time類型的變量 t1和 t2 ( 2)在定義結(jié)構(gòu)數(shù)據(jù)類型的同時(shí)定義該結(jié)構(gòu)的變量 格式如下: struct 結(jié)構(gòu)名 { 結(jié)構(gòu)成員說明 };變量名 1,變量名 2, …… 變量名 n; 例如,定義 time結(jié)構(gòu)類型的同時(shí)定義時(shí)間變量 t t2如下。 struct time { unsigned char hour。 unsigned char min。 unsigned char sec } t1, t2; ( 3)直接定義結(jié)構(gòu)類型的變量 格式如下: struct { 結(jié)構(gòu)成員說明 };變量名 1,變量名 2, …… 變量名 n; 例如,直接定義結(jié)構(gòu)類型的變量 t1和 t2的例子如下。 struct { unsigned char hour。 unsigned char min。 unsigned char sec } t1, t2; 注意結(jié)構(gòu)體類型與結(jié)構(gòu)體變量是兩個(gè)概念,結(jié)構(gòu)體變量可以與其他變量重名。 2. 引用結(jié)構(gòu)體變量 引用結(jié)構(gòu)類型變量時(shí)應(yīng)該注意: ( 1)結(jié)構(gòu)不能作為一個(gè)整體參加賦值、存取與運(yùn)算,也不能作為函數(shù)的參數(shù)或函數(shù)的返回值。 可用 amp。運(yùn)算符取得地址后,引用結(jié)構(gòu)變量;或是對(duì)接變量的成員分別引用,引用格式為: 結(jié)構(gòu)變量 .成員名 這里“ .”是成員運(yùn)算符,與“- ”等同。 ( 2)結(jié)構(gòu)類型變量的成員可以象普通變量一樣實(shí)現(xiàn)各種運(yùn)算。 ( 3) Keil C編譯器為結(jié)構(gòu)提供了連續(xù)的存儲(chǔ)空間。指向結(jié)構(gòu)變量的指針,可以訪問結(jié)構(gòu)的成員。 3. 結(jié)構(gòu)數(shù)組 當(dāng)數(shù)組中的每個(gè)元素都具有相同結(jié)構(gòu)類型的結(jié)構(gòu)變量,則稱為結(jié)構(gòu)數(shù)組。結(jié)構(gòu)數(shù)組中的每一個(gè)元素,都具有同一個(gè)結(jié)構(gòu)類型的結(jié)構(gòu)變量都含有相同的成員項(xiàng)。 結(jié)構(gòu)數(shù)組的定義與結(jié)構(gòu)變量的定義的方法基本相同,差別就是將定義變量改成定義數(shù)組。 例如,定義一個(gè) 5元素結(jié)構(gòu)數(shù)組 data[5]。 struct { unsigned char month。 unsigned char day。 unsigned int year; } data[5]; //定義 5個(gè)元素的結(jié)構(gòu)數(shù)組 共用體 共用體中包含多個(gè)不同數(shù)據(jù)類型的成員,所有成員分時(shí)共享同一存儲(chǔ)空間。 共用體類型的定義格式為: union 共用體類型標(biāo)識(shí)符 { 類型說明符 變量名; }; 共用體變量的定義格式為: union 共用體類型標(biāo)識(shí)符 共用體變量名表 例如,定義一個(gè)名為 u1的共用體類型,再定義一個(gè)共用體變量 ux。 定義共用體 u1: union u1 { int j; char k; }; 定義共用體變量 ux union un ux; 枚舉 枚舉數(shù)據(jù)類型是有名的一些整數(shù)常量的集合,具有枚舉數(shù)據(jù)類型的變量可在這些整數(shù)常量之間取值。 枚舉類型的定義格式為: enum 枚舉名 {枚舉符號(hào)列表 }; 枚舉變量定義格式為: enum 枚舉名 變量列表 在枚舉列表中,每項(xiàng)枚舉符號(hào)代表一個(gè)整數(shù)值,在缺省情況下,第 1項(xiàng)枚舉符號(hào)取值為 0,第 2項(xiàng)枚取值為 1, … 。還可以通過初始化確定各項(xiàng)枚舉符號(hào)的取值。 例如, enum motor {run=3, stop=5, start=7}; //定義枚舉數(shù)據(jù)類型 enum motor state; //定義枚舉變量 在定義了枚舉變量后,有如下分支程序。 switch( state) {case run: {其他語句; } break; case stop: {其他語句; } break; case start: {其他語句; } break; } 用 typedef重定義數(shù)據(jù)類型 類型定義可以把已有的類型標(biāo)識(shí)符定義成新的類型標(biāo)識(shí)符,定義后,新的類型標(biāo)識(shí)符就可以作為原標(biāo)識(shí)符使用,相當(dāng)于給老的類型標(biāo)識(shí)符改了一個(gè)名字。 格式: typedef 原類型名 新類型名; 例如: typedef int integer。 //用 integer代替 int typedef float real。 typedef unsigned int UINT。 typedef unsigned long ULONG。 typedef unsigned char BYTE。 定義后,就可以用新類型名定義變量: integer m,n。 //定義整型變量 i, j real kk。 typedef只能聲明各種類型名,目的是增加一種已有數(shù)據(jù)類型的數(shù)據(jù)類型新名稱,與define的區(qū)別是:在編譯之前進(jìn)行預(yù)處理時(shí), define實(shí)現(xiàn)的是字符串替換。 函數(shù) 定義函數(shù) 函數(shù)一般分為主函數(shù) main()和普通函數(shù),普通函數(shù)分為: ( 1)標(biāo)準(zhǔn)庫(kù)函數(shù) 編譯軟件提供的函數(shù),使用這些函數(shù),需要在 C程序中包含庫(kù)函數(shù)文件。 ( 2)用戶自定義函數(shù) 就是用戶自己根據(jù)需要編寫的函數(shù),這些函數(shù)分為:無參數(shù)函數(shù)、有參數(shù)函數(shù)和空函數(shù)(無語句,用于功能擴(kuò)充)。 C程序總是從 main函數(shù)開始執(zhí)行。除主函數(shù)和中斷函數(shù)不能調(diào)用外,其他函數(shù)都可以調(diào)用。 根據(jù)是否傳遞參數(shù),函數(shù)又分為: ( 1)無參函數(shù),在調(diào)用函數(shù)時(shí),不向被調(diào)用函數(shù)傳遞參數(shù),被調(diào)函數(shù)也不返回參數(shù)。 ( 2)有參函數(shù),在調(diào)用函數(shù)時(shí),向被調(diào)用函數(shù)傳遞實(shí)際參數(shù),并向調(diào)用函數(shù)返回參數(shù)。 1. C51中函數(shù)的說明 ( 1)定義函數(shù) 函數(shù)定義的格式: [存儲(chǔ)類型說明符 ] 類型說明符 標(biāo)識(shí)符(形參表) [reentrant][interrupt m][using n][存儲(chǔ)模式 ] {函數(shù)體 } ( 2)引用函數(shù)(原型說明) extern 類型說明符 標(biāo)識(shí)符(形參表) [reentrant] [using n][存儲(chǔ)模式 ] ( 3)函數(shù)調(diào)用 標(biāo)識(shí)符(實(shí)參表); 或 x=標(biāo)識(shí)符(實(shí)參表); 這里: ⑴存儲(chǔ)類型說明符: static 使函數(shù)只能在定義該函數(shù)的文件中,而且是在定義之后才可被調(diào)用。 ⑵ 類型說明符:用于說明函數(shù)的返回值數(shù)據(jù)類型。 數(shù)據(jù)類型為 : 簡(jiǎn)單類型( char,unsigned char,int,unsigned int,long,unsigned long,float),結(jié)構(gòu)與共用( struct, union),位類型( bit),無類型( void)。若函數(shù)返回的是指針,在函數(shù)名前加“ *” ⑶標(biāo)識(shí)符: 函數(shù)名() 帶或不帶返回值的函數(shù)。 *函數(shù)名() 返回指針的函數(shù)。 ( * 函數(shù)名)( void) 定義帶或不帶返回值的無參數(shù)函數(shù)指針。 ( * 函數(shù)名)(形參表) 定義帶或不帶返回值的有參數(shù)函數(shù)指針。 *( * 函數(shù)名)( void) 定義返回指針的無參數(shù)函數(shù)指針。 *( * 函數(shù)名)(形參表) 定義返回指針的有參數(shù)函數(shù)指針。 ⑸形參表:傳入函數(shù)的形式參數(shù)列表,格式如下: (類型說明符 變量名 [[,類型說明符 變量名, ]…] ) 或( void) 或() 這里( void)表示無參數(shù)輸入,有的編譯器支持空括號(hào)()。 ⑹ 修飾符 ①寄存器組使用修飾符 using n 該修飾符用于指定函數(shù)使用的寄存器組,這里 n( 0~3)用于指定寄存器組。每個(gè)寄存器組包含 8個(gè)工作寄存器( R0~R7)。若是不用該修飾符,則編譯器自動(dòng)選擇一組寄存器。 using n 不能用于具有返回值的函數(shù),因?yàn)?C51是將返回值放在寄存器中的,在返回后寄存器改變了,返回值也就不對(duì)了。 ②中斷函數(shù)修飾符 interrupt m 該修飾符將函數(shù)轉(zhuǎn)化為中斷函數(shù),這里 m( 0~31), m與中斷向量之間的關(guān)系如表所示。 m 中斷源 中斷向量 8m+3 0 外中斷 0 0003H 1 定時(shí)器 0 000BH 2 外中斷 1 0013H 3 定時(shí)器 1 00
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1