數(shù)組函數(shù)指針_第1頁(yè)
數(shù)組函數(shù)指針_第2頁(yè)
數(shù)組函數(shù)指針_第3頁(yè)
數(shù)組函數(shù)指針_第4頁(yè)
數(shù)組函數(shù)指針_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)組函數(shù)指針第1頁(yè),共22頁(yè),2023年,2月20日,星期五一、數(shù)組數(shù)組:把具有相同數(shù)據(jù)類型的若干變量按有序的形式組織起來(lái)的集合。其中,數(shù)組中的單個(gè)變量稱為數(shù)組元素。數(shù)組屬于構(gòu)造數(shù)據(jù)類型。一個(gè)數(shù)組可以分解為多個(gè)數(shù)組元素,這些數(shù)組元素可以是基本數(shù)據(jù)類型或是構(gòu)造類型。按照數(shù)組元素所屬的基本數(shù)據(jù)類型的不同,數(shù)組又可分為數(shù)值數(shù)組、字符數(shù)組、指針數(shù)組、結(jié)構(gòu)數(shù)組等各種類別。在C51語(yǔ)言中,數(shù)組可以是一維的,也可以是多維的。第2頁(yè),共22頁(yè),2023年,2月20日,星期五數(shù)組元素的表示:數(shù)組元素是組成數(shù)組的基本單元。在C51語(yǔ)言中,數(shù)組元素也是一種變量,其標(biāo)識(shí)方法為數(shù)組名后跟一個(gè)下標(biāo)。下標(biāo)表示了元素在數(shù)組中的順序號(hào)。數(shù)組元素的一般形式為:數(shù)組名[下標(biāo)]這里的下標(biāo)只能為整型常量或整型表達(dá)式。例如,a[6]、a[i+j]、a[i++]都是合法的數(shù)組元素。數(shù)組元素通常也稱為下標(biāo)變量。在C51語(yǔ)言中必須先定義數(shù)組,才能使用下標(biāo)變量。另外,程序中只能逐個(gè)地使用下標(biāo)變量,而不能一次引用整個(gè)數(shù)組。第3頁(yè),共22頁(yè),2023年,2月20日,星期五數(shù)組元素的初始化賦值是指在數(shù)組聲明的時(shí)候給數(shù)組元素賦予初值。數(shù)組初始化是在編譯階段進(jìn)行的。這樣將減少程序運(yùn)行時(shí)間,提高效率。數(shù)組元素初始化賦值的一般形式為:類型說(shuō)明符數(shù)組名[常量表達(dá)式]={值,值……值};在{}中的各數(shù)據(jù)值即為各元素的初值,各值之間用逗號(hào)間隔。示例如下:inta[10]={0,1,2,3,4,5,6,7,8,9};該語(yǔ)句相當(dāng)于賦值語(yǔ)句a[0]=0,a[1]=1,…,a[9]=9。第4頁(yè),共22頁(yè),2023年,2月20日,星期五1.一維數(shù)組一維數(shù)組的定義格式為:數(shù)據(jù)類型說(shuō)明符[存儲(chǔ)器類型]

數(shù)組名

[常量表達(dá)式];其中,數(shù)據(jù)類型說(shuō)明數(shù)組中各元素的數(shù)據(jù)類型;存儲(chǔ)器類型是可選項(xiàng),它指出定義的數(shù)組所在的存儲(chǔ)空間;數(shù)組名是整個(gè)數(shù)組的變量名;常量表達(dá)式說(shuō)明了該數(shù)組的長(zhǎng)度,即數(shù)組中元素的個(gè)數(shù),常量表達(dá)式必須用方括號(hào)“[

]”括起來(lái),而且其中不能含有變量。例如:charmath[60];//定義math數(shù)組為字符型,數(shù)組元素個(gè)數(shù)為60個(gè)。intcount[10]; //聲明整型數(shù)組count,共10個(gè)元素。第5頁(yè),共22頁(yè),2023年,2月20日,星期五在C51語(yǔ)言中,一維數(shù)組的一般說(shuō)明形式如下:類型說(shuō)明符數(shù)組名[常量表達(dá)式];如果,在聲明數(shù)組時(shí)就給數(shù)組進(jìn)行初始化賦值,可以采用如下的形式:類型說(shuō)明符數(shù)組名[常量表達(dá)式]={值,值,…,值};一維數(shù)組聲明示例如下:inta[4]={1,2,3,4};//數(shù)組元素中的對(duì)應(yīng)關(guān)系圖第6頁(yè),共22頁(yè),2023年,2月20日,星期五字符數(shù)組:在C51語(yǔ)言中,字符串被定義為一個(gè)以空字符結(jié)束的字符數(shù)組。其中空字符以“\0”來(lái)標(biāo)識(shí),它一般是不顯示的。因此,在程序中聲明字符數(shù)組時(shí),必須聲明一個(gè)比要存的字符串多一個(gè)字符的數(shù)組,最后一位用來(lái)存空字符“\0”。例如,假如要定義一個(gè)存放長(zhǎng)度為20的字符串的數(shù)組s,可以寫(xiě)成:chars[21];這樣就給字符串末尾的空字符保留了空間。chara[]={“ZhongGuo”};chara[9]=“ZhongGuo”;第7頁(yè),共22頁(yè),2023年,2月20日,星期五2.二維數(shù)組定義多維數(shù)組時(shí),只要在數(shù)組名后面增加相應(yīng)于維數(shù)的常量表達(dá)式即可。二維數(shù)組的定義格式為: 數(shù)據(jù)類型[存儲(chǔ)器類型]數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];

例:intch[10][20];該語(yǔ)句聲明ch為(10,20)的二維整型數(shù)組,其有10行20列,共200個(gè)元素。和其他大多數(shù)計(jì)算機(jī)語(yǔ)言不同的是,C51不使用逗號(hào)區(qū)分下標(biāo),而是用方括號(hào)將各維下標(biāo)括起。另外,數(shù)組的二維下標(biāo)均從0計(jì)算。例如,要存取數(shù)組ch中下標(biāo)為(3,5)的元素可以寫(xiě)成:ch[3][5]第8頁(yè),共22頁(yè),2023年,2月20日,星期五二維數(shù)組的初始化可以有如下三種方式:1.初始化方法1逐行給出數(shù)組元素值,示例如下:intsum[2][5]={{5,4,3,2,1},{-6,-4,6,3,0}};2.初始化方法2按順序逐個(gè)給出數(shù)組元素,示例如下:intsum[2][5]={5,4,3,2,1,-6,-4,6,3,0};3.初始化方法3二維數(shù)組也可以進(jìn)行局部初始化,示例如下:intnum[4][4]={{1,2,3,4},{-2,0,-1,3},{7,10,-9,6}};第9頁(yè),共22頁(yè),2023年,2月20日,星期五二維字符串?dāng)?shù)組它是二維數(shù)組的特殊形式,其元素值為字符。二維字符串?dāng)?shù)組的定義形式如下:char數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];其中,左下標(biāo)決定字符串的個(gè)數(shù),右下標(biāo)說(shuō)明字符串的最大長(zhǎng)度。二維字符串?dāng)?shù)組的聲明示例如下:charstr[3][80];該語(yǔ)句聲明了一個(gè)二維字符串?dāng)?shù)組,可存放3個(gè)字符串,單個(gè)字符串的最大長(zhǎng)度為80個(gè)字符。第10頁(yè),共22頁(yè),2023年,2月20日,星期五例:數(shù)組賦值,觀察存儲(chǔ)空間#include"reg52.h"voidmain(){unsignedchara[6]={0,1,2,3,4,5},b[6];intd[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},k[3][4];charch[]={"abcdABCD"};unsignedchari,j;for(i=0;i<6;i++){b[i]=a[i]; //一維數(shù)組賦值

}for(i=0;i<3;i++){for(j=0;j<4;j++){k[i][j]=d[i][j]; //二維數(shù)組賦值

}}while(1);//暫停

}第11頁(yè),共22頁(yè),2023年,2月20日,星期五二、指針在C51程序中,訪問(wèn)或修改變量可以通過(guò)兩種方式來(lái)實(shí)現(xiàn)。一種是直接訪問(wèn)或修改這塊區(qū)域的內(nèi)容來(lái)實(shí)現(xiàn)的;另一種是先求出變量的地址,然后再通過(guò)地址對(duì)該變量的值進(jìn)行訪問(wèn),這就是本節(jié)所要講解的指針及指針變量。第12頁(yè),共22頁(yè),2023年,2月20日,星期五1.地址、指針和指針變量的概念地址:是單片機(jī)內(nèi)存單元的編號(hào)。通常一個(gè)字節(jié)稱為一個(gè)內(nèi)存單元。指針:實(shí)際上也是一個(gè)地址,其表示的是一個(gè)變量在內(nèi)存中的首地址。不同的數(shù)據(jù)類型所占用的內(nèi)存單元數(shù)和它的大小有關(guān)。在C51語(yǔ)言中,根據(jù)數(shù)據(jù)類型或數(shù)據(jù)結(jié)構(gòu)的不同,一個(gè)變量往往都占有一組連續(xù)的內(nèi)存單元,單用“地址”這個(gè)概念并不能很好地描述這個(gè)變量,從而引進(jìn)了“指針變量”的概念。指針變量是指向一個(gè)數(shù)據(jù)結(jié)構(gòu)的首地址,因而概念更明確,尋址更方便。第13頁(yè),共22頁(yè),2023年,2月20日,星期五2.指針變量的聲明指針變量的聲明與一般變量的聲明相似,聲明指針變量的一般形式為:類型標(biāo)識(shí)符*指針名1,*指針名2,…;其中前面的“類型標(biāo)識(shí)符”表示該指針變量所指向的變量的類型,即指針變量的類型。典型的指針變量的聲明示例如下:int*p1; //p1是指向整型變量的指針變量char*p2; //p2是指向字符變量的指針變量float*p3; //p3是指向浮點(diǎn)變量的指針變量第14頁(yè),共22頁(yè),2023年,2月20日,星期五3.指針變量的賦值指針變量被聲明后可以指向任何同類型的變量。如果定義指針變量時(shí)不進(jìn)行初始化,編譯系統(tǒng)不能確定它具體的指向,此時(shí)該指針變量被初始化為NULL,它的值為0。這里需要強(qiáng)調(diào)的是,未經(jīng)賦值的指針變量不能在程序中使用,否則將由指針指向錯(cuò)誤導(dǎo)致整個(gè)程序的混亂。另外,指針變量的賦值只能賦予地址,決不能賦予任何其他數(shù)據(jù),否則將引起錯(cuò)誤。在C51語(yǔ)言中,不知道變量的具體地址,變量的首地址是由編譯系統(tǒng)分配的。為此,C51語(yǔ)言中提供了地址運(yùn)算符“&”,可以獲取變量的首地址。其一般形式如下:&變量名第15頁(yè),共22頁(yè),2023年,2月20日,星期五假設(shè)有指向整型變量的指針變量p和整型變量a,如要把整型變量a的地址賦予p,(1)可以采用初始化賦值,示例如下:inta;int*p=&a;//初始化賦值,&a表示取變量a的首地址(2)也可以采用取地址賦值,示例如下:inta;int*p;p=&a; //利用&a獲得變量a的首地址,然后賦值給p第16頁(yè),共22頁(yè),2023年,2月20日,星期五把一個(gè)指針變量的值直接賦予相同類型變量的另一個(gè)指針變量。示例如下:inta=5,b=6; //定義變量和初始化int*p1=&a,*p2=&b; //定義指針變量和初始化p2=p1; //把a(bǔ)的地址賦予指針變量p2*p2=*p1; //把p1指向的內(nèi)容賦給p2所指的區(qū)域例:觀察指針變量的類型改變和引用第17頁(yè),共22頁(yè),2023年,2月20日,星期五三、

函數(shù)C51語(yǔ)言中也引入了函數(shù)的概念。C51程序中的函數(shù)數(shù)目是不受限制的,但是,一個(gè)典型的單片機(jī)程序都必須包含且只能包含一個(gè)主函數(shù),即main函數(shù),它是整個(gè)程序的入口,整個(gè)程序從這個(gè)主函數(shù)開(kāi)始執(zhí)行。C51語(yǔ)言允許用戶使用一些編譯環(huán)境自帶的庫(kù)函數(shù),合理使用庫(kù)函數(shù)可以大大簡(jiǎn)化程序設(shè)計(jì)過(guò)程。同時(shí),為了有利于程序的模塊化,促進(jìn)程序資源的共享。C51也支持用戶使用自定義函數(shù)。

18第18頁(yè),共22頁(yè),2023年,2月20日,星期五函數(shù)是能夠?qū)崿F(xiàn)特定功能的代碼段。一個(gè)C51程序通常由一個(gè)主函數(shù)和若干個(gè)函數(shù)構(gòu)成。其中,主函數(shù)即main()函數(shù)。C51程序的執(zhí)行總是從main函數(shù)開(kāi)始,完成對(duì)其他函數(shù)的調(diào)用后再返回到主函數(shù),最后由main函數(shù)結(jié)束整個(gè)程序。一個(gè)C51源程序必須有,且只能有一個(gè)主函數(shù)main()。除了主函數(shù)外,C51還提供了極為豐富的庫(kù)函數(shù),而且還允許用戶自定義函數(shù)。在C51程序中,由主函數(shù)調(diào)用其他函數(shù),其他函數(shù)之間也可以相互調(diào)用。同一個(gè)函數(shù)可以被一個(gè)或多個(gè)函數(shù)調(diào)用任意次。在使用C51函數(shù)時(shí),需要注意如下幾點(diǎn):C51的源程序的函數(shù)數(shù)目是不限的。在一個(gè)函數(shù)的函數(shù)體內(nèi),不能再定義另一個(gè)函數(shù),即不能嵌套定義。函數(shù)之間允許相互調(diào)用,也允許“嵌套調(diào)用”。函數(shù)還可以自己調(diào)用自己,稱為“遞歸調(diào)用”。main()函數(shù)是主函數(shù),它可以調(diào)用其他函數(shù),而不允許被其他函數(shù)調(diào)用。第19頁(yè),共22頁(yè),2023年,2月20日,星期五庫(kù)函數(shù)與自定義函數(shù)庫(kù)函數(shù)是針對(duì)一些經(jīng)常使用的算法,經(jīng)前人開(kāi)發(fā)、歸納、整理形成的通用功能子函數(shù)。KeilC51內(nèi)部有數(shù)百個(gè)庫(kù)函數(shù),可供用戶調(diào)用,調(diào)用KeilC51的庫(kù)函數(shù)時(shí)只需要包含具有該函數(shù)說(shuō)明的相應(yīng)的頭文件即可,如#include<REG51.H>。當(dāng)使用不同類型的單片機(jī)時(shí),可包含其相應(yīng)的頭文件。第20頁(yè),共22頁(yè),2023年,2月20日,星期五在C51語(yǔ)言中,函數(shù)定義的一般一般形式如下:類型說(shuō)明符函數(shù)名(形式參數(shù)列表)形參類型說(shuō)明{語(yǔ)句return語(yǔ)句}其中:(1)“類型說(shuō)明符”聲明了函數(shù)返回值的類型,該返回值可以是任何有效類型。如果函數(shù)沒(méi)有返回值,則可以采用void說(shuō)明符。函數(shù)類型的說(shuō)明必須處于對(duì)它的首次調(diào)用之前,這樣C51程序編譯時(shí)才能為返回非整型值的函數(shù)生成正確代碼。(2)“形式參數(shù)列表”是一個(gè)用逗號(hào)分隔的參數(shù)變量表。當(dāng)函數(shù)被調(diào)用時(shí),這些變量接收調(diào)用參數(shù)的值。(3)“return語(yǔ)句”用于返回函數(shù)執(zhí)行的結(jié)果,如果沒(méi)有返回值,則可以省略該語(yǔ)句。

第21頁(yè),共22頁(yè),2023年,2月20日,星期五函數(shù)的調(diào)用函數(shù)名(實(shí)參列表)其中,函數(shù)名即被調(diào)用的函數(shù),實(shí)參列表是主調(diào)函數(shù)傳遞給被調(diào)函數(shù)的數(shù)據(jù)。

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論