版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
關于數(shù)組函數(shù)指針第一頁,共二十五頁,2022年,8月28日2一、數(shù)組數(shù)組:把具有相同數(shù)據(jù)類型的若干變量按有序的形式組織起來的集合。其中,數(shù)組中的單個變量稱為數(shù)組元素。數(shù)組屬于構造數(shù)據(jù)類型。一個數(shù)組可以分解為多個數(shù)組元素,這些數(shù)組元素可以是基本數(shù)據(jù)類型或是構造類型。按照數(shù)組元素所屬的基本數(shù)據(jù)類型的不同,數(shù)組又可分為數(shù)值數(shù)組、字符數(shù)組、指針數(shù)組、結構數(shù)組等各種類別。在C51語言中,數(shù)組可以是一維的,也可以是多維的。第二頁,共二十五頁,2022年,8月28日3數(shù)組元素的表示:數(shù)組元素是組成數(shù)組的基本單元。在C51語言中,數(shù)組元素也是一種變量,其標識方法為數(shù)組名后跟一個下標。下標表示了元素在數(shù)組中的順序號。數(shù)組元素的一般形式為:數(shù)組名[下標]這里的下標只能為整型常量或整型表達式。例如,a[6]、a[i+j]、a[i++]都是合法的數(shù)組元素。數(shù)組元素通常也稱為下標變量。在C51語言中必須先定義數(shù)組,才能使用下標變量。另外,程序中只能逐個地使用下標變量,而不能一次引用整個數(shù)組。第三頁,共二十五頁,2022年,8月28日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。第四頁,共二十五頁,2022年,8月28日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個元素。第五頁,共二十五頁,2022年,8月28日6在C51語言中,一維數(shù)組的一般說明形式如下:類型說明符數(shù)組名[常量表達式];如果,在聲明數(shù)組時就給數(shù)組進行初始化賦值,可以采用如下的形式:類型說明符數(shù)組名[常量表達式]={值,值,…,值};一維數(shù)組聲明示例如下:inta[4]={1,2,3,4};//數(shù)組元素中的對應關系圖第六頁,共二十五頁,2022年,8月28日7字符數(shù)組:在C51語言中,字符串被定義為一個以空字符結束的字符數(shù)組。其中空字符以“\0”來標識,它一般是不顯示的。因此,在程序中聲明字符數(shù)組時,必須聲明一個比要存的字符串多一個字符的數(shù)組,最后一位用來存空字符“\0”。例如,假如要定義一個存放長度為20的字符串的數(shù)組s,可以寫成:chars[21];這樣就給字符串末尾的空字符保留了空間。chara[]={“ZhongGuo”};chara[9]=“ZhongGuo”;第七頁,共二十五頁,2022年,8月28日82.二維數(shù)組定義多維數(shù)組時,只要在數(shù)組名后面增加相應于維數(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]第八頁,共二十五頁,2022年,8月28日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}};第九頁,共二十五頁,2022年,8月28日10二維字符串數(shù)組它是二維數(shù)組的特殊形式,其元素值為字符。二維字符串數(shù)組的定義形式如下:char數(shù)組名[常量表達式1][常量表達式2];其中,左下標決定字符串的個數(shù),右下標說明字符串的最大長度。二維字符串數(shù)組的聲明示例如下:charstr[3][80];該語句聲明了一個二維字符串數(shù)組,可存放3個字符串,單個字符串的最大長度為80個字符。第十頁,共二十五頁,2022年,8月28日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);//暫停
}第十一頁,共二十五頁,2022年,8月28日12二、指針在C51程序中,訪問或修改變量可以通過兩種方式來實現(xiàn)。一種是直接訪問或修改這塊區(qū)域的內容來實現(xiàn)的;另一種是先求出變量的地址,然后再通過地址對該變量的值進行訪問,這就是本節(jié)所要講解的指針及指針變量。第十二頁,共二十五頁,2022年,8月28日131.地址、指針和指針變量的概念地址:是單片機內存單元的編號。通常一個字節(jié)稱為一個內存單元。指針:實際上也是一個地址,其表示的是一個變量在內存中的首地址。不同的數(shù)據(jù)類型所占用的內存單元數(shù)和它的大小有關。在C51語言中,根據(jù)數(shù)據(jù)類型或數(shù)據(jù)結構的不同,一個變量往往都占有一組連續(xù)的內存單元,單用“地址”這個概念并不能很好地描述這個變量,從而引進了“指針變量”的概念。指針變量是指向一個數(shù)據(jù)結構的首地址,因而概念更明確,尋址更方便。第十三頁,共二十五頁,2022年,8月28日142.指針變量的聲明指針變量的聲明與一般變量的聲明相似,聲明指針變量的一般形式為:類型標識符*指針名1,*指針名2,…;其中前面的“類型標識符”表示該指針變量所指向的變量的類型,即指針變量的類型。典型的指針變量的聲明示例如下:int*p1; //p1是指向整型變量的指針變量char*p2; //p2是指向字符變量的指針變量float*p3; //p3是指向浮點變量的指針變量第十四頁,共二十五頁,2022年,8月28日153.指針變量的賦值指針變量被聲明后可以指向任何同類型的變量。如果定義指針變量時不進行初始化,編譯系統(tǒng)不能確定它具體的指向,此時該指針變量被初始化為NULL,它的值為0。這里需要強調的是,未經(jīng)賦值的指針變量不能在程序中使用,否則將由指針指向錯誤導致整個程序的混亂。另外,指針變量的賦值只能賦予地址,決不能賦予任何其他數(shù)據(jù),否則將引起錯誤。在C51語言中,不知道變量的具體地址,變量的首地址是由編譯系統(tǒng)分配的。為此,C51語言中提供了地址運算符“&”,可以獲取變量的首地址。其一般形式如下:&變量名第十五頁,共二十五頁,2022年,8月28日16假設有指向整型變量的指針變量p和整型變量a,如要把整型變量a的地址賦予p,(1)可以采用初始化賦值,示例如下:inta;int*p=&a;//初始化賦值,&a表示取變量a的首地址(2)也可以采用取地址賦值,示例如下:inta;int*p;p=&a; //利用&a獲得變量a的首地址,然后賦值給p第十六頁,共二十五頁,2022年,8月28日17把一個指針變量的值直接賦予相同類型變量的另一個指針變量。示例如下:inta=5,b=6; //定義變量和初始化int*p1=&a,*p2=&b; //定義指針變量和初始化p2=p1; //把a的地址賦予指針變量p2*p2=*p1; //把p1指向的內容賦給p2所指的區(qū)域例:觀察指針變量的類型改變和引用第十七頁,共二十五頁,2022年,8月28日18三、
函數(shù)C51語言中也引入了函數(shù)的概念。C51程序中的函數(shù)數(shù)目是不受限制的,但是,一個典型的單片機程序都必須包含且只能包含一個主函數(shù),即main函數(shù),它是整個程序的入口,整個程序從這個主函數(shù)開始執(zhí)行。C51語言允許用戶使用一些編譯環(huán)境自帶的庫函數(shù),合理使用庫函數(shù)可以大大簡化程序設計過程。同時,為了有利于程序的模塊化,促進程序資源的共享。C51也支持用戶使用自定義函數(shù)。
18第十八頁,共二十五頁,2022年,8月28日19函數(shù)是能夠實現(xiàn)特定功能的代碼段。一個C51程序通常由一個主函數(shù)和若干個函數(shù)構成。其中,主函數(shù)即main()函數(shù)。C51程序的執(zhí)行總是從main函數(shù)開始,完成對其他函數(shù)的調用后再返回到主函數(shù),最后由main函數(shù)結束整個程序。一個C51源程序必須有,且只能有一個主函數(shù)main()。除了主函數(shù)外,C51還提供了極為豐富的庫函數(shù),而且還允許用戶自定義函數(shù)。在C51程序中,由主函數(shù)調用其他函數(shù),其他函數(shù)之間也可以相互調用。同一個函數(shù)可以被一個或多個函數(shù)調用任意次。在使用C51函數(shù)時,需要注意如下幾點:C51的源程序的函數(shù)數(shù)目是不限的。在一個函數(shù)的函數(shù)體內,不能再定義另一個函數(shù),即不能嵌套定義。函數(shù)之間允許相互調用,也允許“嵌套調用”。函數(shù)還可以自己調用自己,稱為“遞歸調用”。main()函數(shù)是主函數(shù),它可以調用其他函數(shù),而不允許被其他函數(shù)調用。第十九頁,共二十五頁,2022年,8月28日20庫函數(shù)與自定義函數(shù)庫函數(shù)是針對一些經(jīng)常使用的算法,經(jīng)前人開發(fā)、歸納、整理形成的通用功能子函數(shù)。KeilC51內部有數(shù)百個庫函數(shù),可供用戶調用,調用KeilC51的庫函數(shù)時只需要包含具有該函數(shù)說明的相應的頭文件即可,如#include<REG51.H>。當使用不同類型的單片機時,可包含其相應的頭文件。第二十頁,共二十五頁,2022年,8月28日21在C51語言中,函數(shù)定義的一般一般形式如下:類型說明符函數(shù)名(形式參數(shù)列表)形參類型說明{語句return語句}其中:(1)“類型說明符”聲明了函數(shù)返回值的類型,該返回值可以是任何有效類型。如果函數(shù)沒有返回值,則可以采用void說明符。函數(shù)類型的說明必須處于對它的首次調用之前,這樣C51程序編譯時才能為返回非整型值的函數(shù)生成正確代碼。(2)“形式參數(shù)列表”是一個用逗號分隔的參數(shù)變量表。當函數(shù)被調用時,這些變量接收調用參數(shù)的值。(3)“return語句”用于返回函數(shù)執(zhí)行的結果,如果沒有返回值,則可以省略該語句。
第二十一頁,共二十五頁,2022年,8月28日22函數(shù)的調用函數(shù)名(實參列表)其中,函數(shù)名即被調用的函數(shù),實參列表是主調函數(shù)傳遞給被調函數(shù)的數(shù)據(jù)。通常,函數(shù)可以有以下3種調用方式。(1)函數(shù)語句:把函數(shù)作為一個語句,主要用于無返回值的函數(shù)。示例如下:delay();(2)函數(shù)表達式:函數(shù)出現(xiàn)在表達式中,主要用于有返回值的函數(shù),將返回值賦值給變量。示例如
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年深圳中考歷史易混考點辨析試卷(附答案可下載)
- 燃氣站點消防演練
- 速凍肉制品技術培訓課件
- 切削刀具知識培訓課件
- 分院介紹教學課件
- 分診護士培訓
- 敗血癥患者康復護理指導
- 2026福建三明市清流縣應急管理局招聘縣森林消防大隊勞務派遣人員1人備考題庫及答案詳解一套
- 廣發(fā)證券分支機構“星·起點”培訓生2026屆校招備考題庫及答案詳解(易錯題)
- 2026重慶市萬州區(qū)長坪鄉(xiāng)人民政府非全日制公益性崗位招聘1人備考題庫附答案詳解
- 湖南省2025-2026學年七年級歷史上學期期末復習試卷(含答案)
- 2026年中國熱帶農業(yè)科學院南亞熱帶作物研究所第一批招聘23人備考題庫完美版
- 2026新疆阿合奇縣公益性崗位(鄉(xiāng)村振興專干)招聘44人考試參考試題及答案解析
- 紡織倉庫消防安全培訓
- 器官移植術后排斥反應的風險分層管理
- 虛擬電廠關鍵技術
- 事業(yè)單位清算及財務報告編寫范本
- 護坡綠化勞務合同范本
- 臨床績效的DRG與CMI雙指標調控
- 護坡施工安全專項方案
- 2026年湛江日報社公開招聘事業(yè)編制工作人員備考題庫及完整答案詳解
評論
0/150
提交評論