版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
關(guān)于數(shù)組函數(shù)指針第1頁,講稿共25頁,2023年5月2日,星期三2一、數(shù)組數(shù)組:把具有相同數(shù)據(jù)類型的若干變量按有序的形式組織起來的集合。其中,數(shù)組中的單個變量稱為數(shù)組元素。數(shù)組屬于構(gòu)造數(shù)據(jù)類型。一個數(shù)組可以分解為多個數(shù)組元素,這些數(shù)組元素可以是基本數(shù)據(jù)類型或是構(gòu)造類型。按照數(shù)組元素所屬的基本數(shù)據(jù)類型的不同,數(shù)組又可分為數(shù)值數(shù)組、字符數(shù)組、指針數(shù)組、結(jié)構(gòu)數(shù)組等各種類別。在C51語言中,數(shù)組可以是一維的,也可以是多維的。第2頁,講稿共25頁,2023年5月2日,星期三3數(shù)組元素的表示:數(shù)組元素是組成數(shù)組的基本單元。在C51語言中,數(shù)組元素也是一種變量,其標識方法為數(shù)組名后跟一個下標。下標表示了元素在數(shù)組中的順序號。數(shù)組元素的一般形式為:數(shù)組名[下標]這里的下標只能為整型常量或整型表達式。例如,a[6]、a[i+j]、a[i++]都是合法的數(shù)組元素。數(shù)組元素通常也稱為下標變量。在C51語言中必須先定義數(shù)組,才能使用下標變量。另外,程序中只能逐個地使用下標變量,而不能一次引用整個數(shù)組。第3頁,講稿共25頁,2023年5月2日,星期三4數(shù)組元素的初始化賦值是指在數(shù)組聲明的時候給數(shù)組元素賦予初值。數(shù)組初始化是在編譯階段進行的。這樣將減少程序運行時間,提高效率。數(shù)組元素初始化賦值的一般形式為:類型說明符數(shù)組名[常量表達式]={值,值……值};在{}中的各數(shù)據(jù)值即為各元素的初值,各值之間用逗號間隔。示例如下:inta[10]={0,1,2,3,4,5,6,7,8,9};該語句相當于賦值語句a[0]=0,a[1]=1,…,a[9]=9。第4頁,講稿共25頁,2023年5月2日,星期三51.一維數(shù)組一維數(shù)組的定義格式為:數(shù)據(jù)類型說明符[存儲器類型]
數(shù)組名
[常量表達式];其中,數(shù)據(jù)類型說明數(shù)組中各元素的數(shù)據(jù)類型;存儲器類型是可選項,它指出定義的數(shù)組所在的存儲空間;數(shù)組名是整個數(shù)組的變量名;常量表達式說明了該數(shù)組的長度,即數(shù)組中元素的個數(shù),常量表達式必須用方括號“[
]”括起來,而且其中不能含有變量。例如:charmath[60];//定義math數(shù)組為字符型,數(shù)組元素個數(shù)為60個。intcount[10]; //聲明整型數(shù)組count,共10個元素。第5頁,講稿共25頁,2023年5月2日,星期三6在C51語言中,一維數(shù)組的一般說明形式如下:類型說明符數(shù)組名[常量表達式];如果,在聲明數(shù)組時就給數(shù)組進行初始化賦值,可以采用如下的形式:類型說明符數(shù)組名[常量表達式]={值,值,…,值};一維數(shù)組聲明示例如下:inta[4]={1,2,3,4};//數(shù)組元素中的對應(yīng)關(guān)系圖第6頁,講稿共25頁,2023年5月2日,星期三7字符數(shù)組:在C51語言中,字符串被定義為一個以空字符結(jié)束的字符數(shù)組。其中空字符以“\0”來標識,它一般是不顯示的。因此,在程序中聲明字符數(shù)組時,必須聲明一個比要存的字符串多一個字符的數(shù)組,最后一位用來存空字符“\0”。例如,假如要定義一個存放長度為20的字符串的數(shù)組s,可以寫成:chars[21];這樣就給字符串末尾的空字符保留了空間。chara[]={“ZhongGuo”};chara[9]=“ZhongGuo”;第7頁,講稿共25頁,2023年5月2日,星期三82.二維數(shù)組定義多維數(shù)組時,只要在數(shù)組名后面增加相應(yīng)于維數(shù)的常量表達式即可。二維數(shù)組的定義格式為: 數(shù)據(jù)類型[存儲器類型]數(shù)組名[常量表達式1][常量表達式2];
例:intch[10][20];該語句聲明ch為(10,20)的二維整型數(shù)組,其有10行20列,共200個元素。和其他大多數(shù)計算機語言不同的是,C51不使用逗號區(qū)分下標,而是用方括號將各維下標括起。另外,數(shù)組的二維下標均從0計算。例如,要存取數(shù)組ch中下標為(3,5)的元素可以寫成:ch[3][5]第8頁,講稿共25頁,2023年5月2日,星期三9二維數(shù)組的初始化可以有如下三種方式:1.初始化方法1逐行給出數(shù)組元素值,示例如下:intsum[2][5]={{5,4,3,2,1},{-6,-4,6,3,0}};2.初始化方法2按順序逐個給出數(shù)組元素,示例如下:intsum[2][5]={5,4,3,2,1,-6,-4,6,3,0};3.初始化方法3二維數(shù)組也可以進行局部初始化,示例如下:intnum[4][4]={{1,2,3,4},{-2,0,-1,3},{7,10,-9,6}};第9頁,講稿共25頁,2023年5月2日,星期三10二維字符串數(shù)組它是二維數(shù)組的特殊形式,其元素值為字符。二維字符串數(shù)組的定義形式如下:char數(shù)組名[常量表達式1][常量表達式2];其中,左下標決定字符串的個數(shù),右下標說明字符串的最大長度。二維字符串數(shù)組的聲明示例如下:charstr[3][80];該語句聲明了一個二維字符串數(shù)組,可存放3個字符串,單個字符串的最大長度為80個字符。第10頁,講稿共25頁,2023年5月2日,星期三11例:數(shù)組賦值,觀察存儲空間#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頁,講稿共25頁,2023年5月2日,星期三12二、指針在C51程序中,訪問或修改變量可以通過兩種方式來實現(xiàn)。一種是直接訪問或修改這塊區(qū)域的內(nèi)容來實現(xiàn)的;另一種是先求出變量的地址,然后再通過地址對該變量的值進行訪問,這就是本節(jié)所要講解的指針及指針變量。第12頁,講稿共25頁,2023年5月2日,星期三131.地址、指針和指針變量的概念地址:是單片機內(nèi)存單元的編號。通常一個字節(jié)稱為一個內(nèi)存單元。指針:實際上也是一個地址,其表示的是一個變量在內(nèi)存中的首地址。不同的數(shù)據(jù)類型所占用的內(nèi)存單元數(shù)和它的大小有關(guān)。在C51語言中,根據(jù)數(shù)據(jù)類型或數(shù)據(jù)結(jié)構(gòu)的不同,一個變量往往都占有一組連續(xù)的內(nèi)存單元,單用“地址”這個概念并不能很好地描述這個變量,從而引進了“指針變量”的概念。指針變量是指向一個數(shù)據(jù)結(jié)構(gòu)的首地址,因而概念更明確,尋址更方便。第13頁,講稿共25頁,2023年5月2日,星期三142.指針變量的聲明指針變量的聲明與一般變量的聲明相似,聲明指針變量的一般形式為:類型標識符*指針名1,*指針名2,…;其中前面的“類型標識符”表示該指針變量所指向的變量的類型,即指針變量的類型。典型的指針變量的聲明示例如下:int*p1; //p1是指向整型變量的指針變量char*p2; //p2是指向字符變量的指針變量float*p3; //p3是指向浮點變量的指針變量第14頁,講稿共25頁,2023年5月2日,星期三153.指針變量的賦值指針變量被聲明后可以指向任何同類型的變量。如果定義指針變量時不進行初始化,編譯系統(tǒng)不能確定它具體的指向,此時該指針變量被初始化為NULL,它的值為0。這里需要強調(diào)的是,未經(jīng)賦值的指針變量不能在程序中使用,否則將由指針指向錯誤導(dǎo)致整個程序的混亂。另外,指針變量的賦值只能賦予地址,決不能賦予任何其他數(shù)據(jù),否則將引起錯誤。在C51語言中,不知道變量的具體地址,變量的首地址是由編譯系統(tǒng)分配的。為此,C51語言中提供了地址運算符“&”,可以獲取變量的首地址。其一般形式如下:&變量名第15頁,講稿共25頁,2023年5月2日,星期三16假設(shè)有指向整型變量的指針變量p和整型變量a,如要把整型變量a的地址賦予p,(1)可以采用初始化賦值,示例如下:inta;int*p=&a;//初始化賦值,&a表示取變量a的首地址(2)也可以采用取地址賦值,示例如下:inta;int*p;p=&a; //利用&a獲得變量a的首地址,然后賦值給p第16頁,講稿共25頁,2023年5月2日,星期三17把一個指針變量的值直接賦予相同類型變量的另一個指針變量。示例如下:inta=5,b=6; //定義變量和初始化int*p1=&a,*p2=&b; //定義指針變量和初始化p2=p1; //把a的地址賦予指針變量p2*p2=*p1; //把p1指向的內(nèi)容賦給p2所指的區(qū)域例:觀察指針變量的類型改變和引用第17頁,講稿共25頁,2023年5月2日,星期三18三、
函數(shù)C51語言中也引入了函數(shù)的概念。C51程序中的函數(shù)數(shù)目是不受限制的,但是,一個典型的單片機程序都必須包含且只能包含一個主函數(shù),即main函數(shù),它是整個程序的入口,整個程序從這個主函數(shù)開始執(zhí)行。C51語言允許用戶使用一些編譯環(huán)境自帶的庫函數(shù),合理使用庫函數(shù)可以大大簡化程序設(shè)計過程。同時,為了有利于程序的模塊化,促進程序資源的共享。C51也支持用戶使用自定義函數(shù)。
18第18頁,講稿共25頁,2023年5月2日,星期三19函數(shù)是能夠?qū)崿F(xiàn)特定功能的代碼段。一個C51程序通常由一個主函數(shù)和若干個函數(shù)構(gòu)成。其中,主函數(shù)即main()函數(shù)。C51程序的執(zhí)行總是從main函數(shù)開始,完成對其他函數(shù)的調(diào)用后再返回到主函數(shù),最后由main函數(shù)結(jié)束整個程序。一個C51源程序必須有,且只能有一個主函數(shù)main()。除了主函數(shù)外,C51還提供了極為豐富的庫函數(shù),而且還允許用戶自定義函數(shù)。在C51程序中,由主函數(shù)調(diào)用其他函數(shù),其他函數(shù)之間也可以相互調(diào)用。同一個函數(shù)可以被一個或多個函數(shù)調(diào)用任意次。在使用C51函數(shù)時,需要注意如下幾點:C51的源程序的函數(shù)數(shù)目是不限的。在一個函數(shù)的函數(shù)體內(nèi),不能再定義另一個函數(shù),即不能嵌套定義。函數(shù)之間允許相互調(diào)用,也允許“嵌套調(diào)用”。函數(shù)還可以自己調(diào)用自己,稱為“遞歸調(diào)用”。main()函數(shù)是主函數(shù),它可以調(diào)用其他函數(shù),而不允許被其他函數(shù)調(diào)用。第19頁,講稿共25頁,2023年5月2日,星期三20庫函數(shù)與自定義函數(shù)庫函數(shù)是針對一些經(jīng)常使用的算法,經(jīng)前人開發(fā)、歸納、整理形成的通用功能子函數(shù)。KeilC51內(nèi)部有數(shù)百個庫函數(shù),可供用戶調(diào)用,調(diào)用KeilC51的庫函數(shù)時只需要包含具有該函數(shù)說明的相應(yīng)的頭文件即可,如#include<REG51.H>。當使用不同類型的單片機時,可包含其相應(yīng)的頭文件。第20頁,講稿共25頁,2023年5月2日,星期三21在C51語言中,函數(shù)定義的一般一般形式如下:類型說明符函數(shù)名(形式參數(shù)列表)形參類型說明{語句return語句}其中:(1)“類型說明符”聲明了函數(shù)返回值的類型,該返回值可以是任何有效類型。如果函數(shù)沒有返回值,則可以采用void說明符。函數(shù)類型的說明必須處于對它的首次調(diào)用之前,這樣C51程序編譯時才能為返回非整型值的函數(shù)生成正確代碼。(2)“形式參數(shù)列表”是一個用逗號分隔的參數(shù)變量表。當函數(shù)被調(diào)用時,這些變量接收調(diào)用參數(shù)的值。(3)“return語句”用于返回函數(shù)執(zhí)行的結(jié)果,如果沒有返回值,則可以省略該語句。
第21頁,講稿共25頁,2023年5月2日,星期三22函數(shù)的調(diào)用函數(shù)名(實參列表)其中,函數(shù)名即被調(diào)用的函數(shù),實參列表是主調(diào)函數(shù)傳遞給被調(diào)函數(shù)的數(shù)據(jù)。通常,函數(shù)可以有以下3種調(diào)用方式。(1)函數(shù)語句:把函數(shù)作為一個語句,主要用于無返回值的函數(shù)。示例如下:delay();(2)函數(shù)表達式:函數(shù)出現(xiàn)在表達式中,主要用于有返回值的函數(shù),將返回值賦值給變量。示例如下
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四下語文22課教育課件
- 2024年福州客運資格證節(jié)能駕駛考試題
- 2024年寶雞道路客運輸從業(yè)資格證考試
- 2024年臨滄客運駕駛員從業(yè)資格考試系統(tǒng)
- 2025屆陜西省漢中市重點中學(xué)生物高二上期末調(diào)研模擬試題含解析
- 甘肅省民勤三中 2025屆數(shù)學(xué)高二上期末綜合測試模擬試題含解析
- 四川省蓬溪縣蓬南中學(xué)2025屆數(shù)學(xué)高二上期末學(xué)業(yè)質(zhì)量監(jiān)測試題含解析
- 2024年材料員資格考試必考重點練習(xí)題庫及答案(共930題)
- 2025屆重慶市第四十二中學(xué)高三英語第一學(xué)期期末預(yù)測試題含解析
- 廣東省佛山市南海區(qū)2025屆英語高三第一學(xué)期期末質(zhì)量檢測試題含解析
- 交管12123學(xué)法減分題庫大全(有參考答案)
- 大學(xué)英語四級 700核心高頻詞
- 建筑施工危險源識別與風險評價清單
- 資金集中管理五大模式
- GB/T 28708-2012管道工程用無縫及焊接鋼管尺寸選用規(guī)定
- 小學(xué)五年級語文思政融合課教學(xué)設(shè)計圓明園的毀滅
- 巡察常見的財務(wù)問題
- 《我們神圣的國土》教學(xué)設(shè)計 省賽一等獎
- 企業(yè)新聞宣傳工作經(jīng)驗分享課件
- 閱讀理解中句子賞析的方法-課件
- LNG冷能利用介紹課件
評論
0/150
提交評論