版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
教學(xué)基本要求:
(1)、熟悉支持80C51單片機的幾種編程語言及各自特點;(2)、熟悉Cx51程序結(jié)構(gòu)及開發(fā)過程
;(3)、熟悉Cx51的數(shù)據(jù)類型及存儲模式;(4)、掌握80C51特殊功能寄存器(SFR)的Cx51定義;(5)、掌握80C51并行接口及Cx51定義;(6)、掌握80C51位變量及Cx51定義;(7)、掌握Cx51運算符、表達式及其規(guī)則;(8)、熟悉Cx51流程控制語句;(9)、掌握Cx51構(gòu)造數(shù)據(jù)類型;(10)、掌握Cx51函數(shù)。第一部分單片機C語言程序設(shè)計概述教學(xué)重點:(1)、Cx51的數(shù)據(jù)類型及存儲模式;(2)、80C51特殊功能寄存器(SFR)的Cx51定義;(3)、80C51并行接口及Cx51定義;教學(xué)難點:(1)、Cx51構(gòu)造數(shù)據(jù)類型;(2)、Cx51函數(shù);一、80C51單片機的編程語言四種語言支持80C51,即:匯編,PL/M,C和BASIC。1、BASIC:非常容易學(xué)。根據(jù)解釋的行就可以找到錯誤,而不是當(dāng)程序執(zhí)行完才能顯示,由于逐行解釋所以很慢,每一行必須在執(zhí)行時轉(zhuǎn)換成機器代碼,需要花費很多時間,不能做到實時性。只適用于要求編程簡單而對編程效率或運行速度要求不高的場合。2、PL/M:是Intel從8080微處理器開始為系列產(chǎn)品開發(fā)的編程語言,是一種結(jié)構(gòu)化語言,但它使用關(guān)鍵字去定義結(jié)構(gòu)。它能產(chǎn)生緊湊代碼??偟膩碚f是“高級匯編語言”,可詳細控制代碼的生成。但對于8051系列,它不支持復(fù)雜的算術(shù)運算,浮點變量,也沒有豐富的庫函數(shù)支持。3、匯編語言:用匯編程序設(shè)計MCS–51系列單片機應(yīng)用程序時,必須要考慮其存儲器結(jié)構(gòu),尤其必須考慮其片內(nèi)數(shù)據(jù)存儲器與特殊功能寄存器正確、合理的使用以及按實際地址處理端口數(shù)據(jù)。當(dāng)設(shè)計一個小的嵌入式系統(tǒng)時,一般我們都用匯編語言。在很多工程中這是一個很好的方法,因為代碼一般都不超過8K而且都比較簡單。如果硬件工程師要同時設(shè)計軟件和硬件經(jīng)常會采用匯編語言來做程序。使用匯編的麻煩在于它的可讀性和可維護性,特別當(dāng)程序沒有很好的標(biāo)注的時候,代碼的可重用性也比較低。4、C語言:C語言是一種源于編寫UNIX操作系統(tǒng)的語言,是一種結(jié)構(gòu)化語言,可產(chǎn)生緊湊代碼。優(yōu)點如下:1)對單片機指令系統(tǒng)不要求了解,僅要求對8051存儲器結(jié)構(gòu)有初步了解;2)寄存器的分配,不同存儲器的尋址及數(shù)據(jù)類型等細節(jié)可由編譯器管理;3)程序有規(guī)范的結(jié)構(gòu),分為不同的函數(shù),使程序結(jié)構(gòu)化;4)更符合人們的思考習(xí)慣;改善了程序的可讀性;5)編程及程序調(diào)試時間顯著縮短,從而提高效率;6)提供的庫包含許多標(biāo)準(zhǔn)子程序,具有較強數(shù)據(jù)處理能力;7)很好的結(jié)構(gòu)性和模塊化更容易閱讀和維護,而且由于有更好的可移植性很多處理器支持C編譯器。用C語言編寫MCS–51單片機的應(yīng)用程序,雖然不像用匯編語言那樣具體地組織、分配存儲器資源和處理端口數(shù)據(jù),但在C語言編程中,對數(shù)據(jù)類型與變量的定義,必須要與單片機的存儲結(jié)構(gòu)相關(guān)聯(lián),否則編譯器不能正確地映射定位。用C語言編寫單片機應(yīng)用程序與編寫標(biāo)準(zhǔn)的C語言程序的不同之處就在于根據(jù)單片機存儲結(jié)構(gòu)及內(nèi)部資源定義相應(yīng)的C語言中的數(shù)據(jù)類型和變量,其它的語法規(guī)定、程序結(jié)構(gòu)及程序設(shè)計方法都與標(biāo)準(zhǔn)的C語言程序設(shè)計相同。二、Cx51程序結(jié)構(gòu)及開發(fā)過程Cx51源程序是一個ASCII文件,可以用任何標(biāo)準(zhǔn)的ASCII文件編輯器來編寫,如:寫字板,記事本等。Cx51程序機構(gòu)與一般C語言沒有什么差別,程序的書寫格式自由度高,靈活性強,有較大的任意性。要點如下:1)一般情況下,每個語句占用一行。2)不同結(jié)構(gòu)層次的語句,從不同的起始位置開始,即在同一結(jié)構(gòu)層次中的語句,縮進同樣的字?jǐn)?shù)。3)表示結(jié)構(gòu)層次的大括號通常寫在該結(jié)構(gòu)語句第一字母的下方,與機構(gòu)化語句對齊,并占用一行。Cx51源程序大體上是一個函數(shù)定義的集合,集合中僅有一個名為main的主函數(shù)。主函數(shù)是程序的入口,主函數(shù)中所有語句執(zhí)行完畢,則程序執(zhí)行完成。函數(shù)定義由類型,函數(shù)名,參數(shù)表和函數(shù)體組成。格式如下:類型 函數(shù)名(參數(shù)表)參數(shù)說明;{數(shù)據(jù)說明部分;執(zhí)行語句部分;}Cx51程序結(jié)構(gòu)說明:1)C語言是由函數(shù)構(gòu)成的。一個C源程序至少包含一個函數(shù),也可以包含一個vmain函數(shù)和若干其他函數(shù)。函數(shù)是C程序的基本單位。2)函數(shù)分為2大類:一類是庫函數(shù),一類是用戶自定義函數(shù)。庫函數(shù)是Cx51在庫文件中已定義的函數(shù),其函數(shù)說明在其頭文件中。用戶函數(shù)是用戶自己定義,自己調(diào)用的一類函數(shù)。3)函數(shù)由2部分組成:函數(shù)說明部分:它包括函數(shù)名,函數(shù)類型,函數(shù)屬性,函數(shù)參數(shù)名和形式參數(shù)類型。一個函數(shù)名后面必須跟一個(),函數(shù)參數(shù)可以沒有。函數(shù)體:函數(shù)說明部分下面的大括號內(nèi)的內(nèi)容。函數(shù)體一般包括:變量定義和執(zhí)行部分(由若干語句組成).4)一個Cx51程序總是從main函數(shù)開始執(zhí)行的,而不論main函數(shù)在整個程序中的位置如何。5)每個語句和數(shù)據(jù)定義的最后必須有一個分號。6)C語言本身沒有輸入/輸出語句,輸入和輸出操作是有庫函數(shù)scanf和printf等函數(shù)來完成的。7)可以用/*~~~*/對C程序中的任何部分作注釋。
系統(tǒng)庫CX51源程序CX51編譯器EPROM編程器鏈接列表文件浮動目標(biāo)碼模塊絕對定位目標(biāo)碼文件用戶庫硬件仿真器映像文件三、Cx51數(shù)據(jù)與運算1、Cx51數(shù)據(jù)類型數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型位型(bit)字符型(char)整型(int)長整型(long)浮點型(float)雙精度浮點型(double)數(shù)組類型(array)結(jié)構(gòu)體類型(struct)共用體(union)枚舉(enum)Cx51數(shù)據(jù)類型分類在編程時,為了書寫方便,經(jīng)常用簡化的縮寫形式來定義數(shù)據(jù)類型。其方法是在源程序開頭使用#define語句自定義簡化的類型標(biāo)識符。例如:#defineucharunsignedchar#defineuintunsignedint這樣,在編程中,就可以用uchar代替unsignedchar,用uint代替unsignedint來定義變量。2、Cx51數(shù)據(jù)的存儲類型與8051存儲結(jié)構(gòu)KEILCx51完全支持8051單片機的硬件結(jié)構(gòu),可以完全訪問8051硬件系統(tǒng)的所有部分。該編譯器通過將變量、常量定義成不同的存儲類型的方法,將他們定義在不同的存儲區(qū)中。存儲類型與存儲空間的對應(yīng)關(guān)系data直接尋址片內(nèi)數(shù)據(jù)存儲區(qū),訪問速度快(128字節(jié))bdata可位尋址片內(nèi)數(shù)據(jù)存儲區(qū),允許位與字節(jié)混合訪問(16字節(jié))idata
間接尋址片內(nèi)數(shù)據(jù)存儲區(qū),可訪問片內(nèi)全部RAM地址空間(256字節(jié))pdata
分頁尋址片外數(shù)據(jù)存儲區(qū)(256字節(jié))由MOV@Ri訪問(i=0,1)xdata片外數(shù)據(jù)存儲區(qū)(64KB)由MOVX@DPTR訪問code程序存儲器64KB空間,由MOVC@DPTR訪問帶存儲類型的變量的定義的一般格式為數(shù)據(jù)類型存儲類型變量名變量存儲類型定義舉例:Chardatavar1;/*var1定位在內(nèi)部RAM*/Bitbdataflags;/*flags定位在內(nèi)部RAM的位尋址區(qū)*/Floatidatax,y,z;/*變量定位在內(nèi)部RAM,但只能采用間址尋址方式*/Unsignedintpdatai;/*無符號整型變量i定位在外部RAM,并用MOVX@Ri訪問*/Unsignedcharxdatav[10][4][4];/*無符號三維數(shù)組變量,定位在外部RAM,并占據(jù)10×4×4=160字節(jié)存儲空間*/如果定義時略去存儲類型標(biāo)志符,編譯器會自動選擇默認(rèn)的類型,由SMALL,COMPACT和LARGE存儲模式指令限制。存儲模式說明SMALL默認(rèn)的存儲類型是data,參數(shù)及局部變量放入可直接尋址片內(nèi)RAM的用戶區(qū)中(最大128字節(jié))。COMPACT默認(rèn)的存儲類型是pdata,參數(shù)及局部變量放入分頁的外部數(shù)據(jù)存儲區(qū),通過@R0或@R1間接訪問,??臻g位于片內(nèi)數(shù)據(jù)存儲區(qū)中LARGE默認(rèn)的存儲類型是xdata,參數(shù)及局部變量直接放入片外數(shù)據(jù)存儲區(qū),使用數(shù)據(jù)指針DPTR來進行尋址。3、80C51特殊功能寄存器(SFR)的Cx51定義80C51單片機中,地址范圍為80H~FFH的單元為SFR寄存器。為了能直接訪問這些SFR,KEILCx51提供了一種自主形式的定義方法,這種定義方法與標(biāo)準(zhǔn)C語言不兼容,只適用于對8051系列單片機進行C語言編程。特殊功能寄存器C51定義的一般語法格式如下: sfrsfr_name=intconstant;“sfr”是定義語句的關(guān)鍵字,其后必須跟一個80C51單片機真實存在的特殊功能寄存器名,“=”后面必須是一個整型常數(shù),不允許帶有運算符的表達式,是特殊功能寄存“sfr_name”的字節(jié)地址,這個常數(shù)值的范圍必須在SFR地址范圍內(nèi),位于0x80~0xFF。例如:sfrSCON=0x98;/*串口控制寄存器地址98H*/sfrTMOD=0x89;/*定時/計數(shù)器方式控制寄存器地址89H*/80C51系列單片機的特殊功能寄存器的數(shù)量與類型不盡相同,因此建議將所有特殊的“sfr”定義放入一個頭文件中,該文件應(yīng)包括MCS-51單片機系列機型中的SFR定義。C51編譯器的“reg51.h”頭文件就是這樣一個文件。對于位尋址的SFR中的位,C51的擴充功能支持特殊位的定義,像SFR一樣不與標(biāo)準(zhǔn)C兼容,使用"sbit"來定義位尋址單元。第一種格式:sbitbit-name=sfr-name^intconstant;“sbit”是定義語句的關(guān)鍵字,后跟一個尋址位符號名(該位符號名必須是80C51單片機中規(guī)定的位名稱),“=”后的“sfr-name”必須是已定義過的SFR的名字,“^”后的整常數(shù)是尋址位在特殊功能寄存器“sfr-name”中的位號,必須是0~7范圍中的數(shù)。例如:sfrPSW=0xD0;/*定義PSW寄存器地址為D0H*/sbitOV=PSW^2;/*定義OV位為PSW.2,地址為D2H*/sbitCY=PSW^7;/*定義CY位為PSW.7,地址為D7H*/第二種格式:sbitbit-name=intconstant^intconstant;“=”后的intconstant為尋址地址位所在的特殊功能寄存器的字節(jié)地址,“^”符號后的intconstant為尋址位在特殊功能寄存器中的位號。例如:sbitOV=0XD0^2;/*定義OV位地址是D0H字節(jié)中的第2位*/sbitCY=0XD0^7;/*定義CY位地址是D0H字節(jié)中的第7位*/第三種格式:sbitbit-name=intconstant;“=”后的intconstant為尋址位的絕對位地址。例如:sbitOV=0XD2;/*定義OV位地址為D2H*/sbitCY=0XD7;/*定義CY位地址為D7H*/特殊功能位代表了一個獨立的定義類,不能與其它位定義和位域互換。4、80C51并行接口及Cx51定義80C51系列單片機并行I/O接口除了芯片上的4個I/O口(P0~P3)外,還可以在片外擴展I/O口。80C51單片機I/O口與數(shù)據(jù)存儲器統(tǒng)一編址,即把一個I/O口當(dāng)作數(shù)據(jù)存儲器中的一個單元來看待。使用C51進行編程時,80C51片內(nèi)的I/O口與片外擴展的I/O可以統(tǒng)一在一個頭文件中定義,也可以在程序中(一般在開始的位置)進行定義,其定義方法如下:對于80C51片內(nèi)I/O口按特殊功能寄存器方法定義。例如:sfrP0=0x80;/*定義P0口,地址為80H*/sfrP1=0x90;/*定義P1口,地址為90H*/對于片外擴展I/O口,則根據(jù)硬件譯碼地址,將其視作為片外數(shù)據(jù)存儲器的一個單元,使用#define語句進行定義。例如:#include<absacc.h>#definePORTAXBYTE[0xFFC0]absacc.h是C51中絕對地址訪問函數(shù)的頭文件,將PORTA定義為外部I/O口,地址為FFC0H,長度為8位。一旦在頭文件或程序中對這些片外I/O口進行定義后,在程序中就可以自由使用變量名與其實際地址的聯(lián)系,以便使程序員能用軟件模擬MCS-51的硬件操作。5、80C51位變量及Cx51定義使用C51編程時,定義了位變量后,就可以用定義了的變量來表示80C51的位尋址單元。位變量的C51定義的一般語法格式如下:位類型標(biāo)識符(bit)位變量名;例如:bitdirection_bit;/*把direction_bit定義為位變量*/bitlook_pointer;/*把look_pointer定義為位變量*/四、Cx51運算符、表達式及其規(guī)則1、算術(shù)運算符及其表達式1)基本的5種算術(shù)運算符:+加法運算符或正值運算符-減法運算符或負(fù)值運算符*乘法運算符/除法運算符%模運算符或稱求余運算符2)算術(shù)表達式和運算符的優(yōu)先級與結(jié)合性3)如何在各類型的數(shù)據(jù)之間進行混合運算2、關(guān)系運算符及其表達式1)六種關(guān)系運算符<,>,<=,>=,==,!=2)優(yōu)先級<,>,<=,>=優(yōu)先級相同(高)==,!=優(yōu)先級相同(低)3)結(jié)合性:左結(jié)合3、邏輯運算符及其表達式1)三種邏輯運算符&&||!2)優(yōu)先級!優(yōu)先級最高——算術(shù)運算——關(guān)系運算再次之——&&和||——賦值運算優(yōu)先級最低3)結(jié)合性:從左向右4、位運算及其表達式1)位運算符&,|~ ^ << >>位運算符只能是整型或字符型數(shù),不能為實型數(shù)據(jù)。5、自增減運算符、復(fù)合運算符極其表達式1)自增減運算符:++i,--i在使用i之前,先使i值加(減)1;i++,i--在使用i之后,再使i值加(減)1。6、復(fù)合的賦值運算符定義:在賦值運算符之前加上其它運算符。+=、-=、*=、/=、%=、《=、》=、&=、^=、|=,3種基本結(jié)構(gòu)組成:順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。1、順序結(jié)構(gòu)
程序中的語句按先后順序逐條執(zhí)行。2、選擇結(jié)構(gòu)在執(zhí)行程序中的選擇結(jié)構(gòu)語句時,該語句的執(zhí)行將根據(jù)不同的條件執(zhí)行不同分支的語句。常用語句:if,elseif語句五、Cx51流程控制語句a>bmax=amax=b輸出maxnoyesa>byesnomax=amax=b3、循環(huán)結(jié)構(gòu)
程序中的語句按先后順序逐條執(zhí)行。1)當(dāng)(while)型循環(huán)該循環(huán)的特點是:當(dāng)條件滿足時,就執(zhí)行循環(huán)體,否則就退出循環(huán)結(jié)構(gòu)。2)直到(dowhile)型循環(huán)該循環(huán)的特點是:先執(zhí)行循環(huán)體,再判斷循環(huán)條件,條件不滿足時,就退出循環(huán)結(jié)構(gòu)。選擇語句:1、if語句if語句是根據(jù)所給定的條件決定執(zhí)行的操作,是“二選一”的分支結(jié)構(gòu)。If語句的一般格式為:if(表達式){語句序列1;}else{語句序列2;}if語句的嵌套單條件選擇if語句完整的嵌套格式為:if(表達式1)if(表達式2)語句序列1;else語句序列2;elseif(表達式3)語句序列3;else語句序列4;2、開關(guān)分支switch語句C語言提供了switch多路選擇語句。格式如下:switch(表達式){case常量表達式1:語句組1;case常量表達式2:語句組2;…case常量表達式n:語句組n;default:語句組n+1;}循環(huán)語句1、while語句while語句用來實現(xiàn)“當(dāng)型”循環(huán)結(jié)構(gòu)。1)while語句的一般格式while語句是一個循環(huán)控制語句,用來控制程序段的重復(fù)執(zhí)行。其一般格式為:while(表達式)循環(huán)體;格式中的循環(huán)體,可以是單個語句、空語句,也可以是復(fù)合語句。說明:如果循環(huán)體包含一個以上的語句,就構(gòu)成塊語句,應(yīng)該用花括號{}括起來。2、do…while語句C語言中,用do…while語句構(gòu)成直到型循環(huán)結(jié)構(gòu)。do…while語句的一般格式do…while語句也是一個循環(huán)控制語句。其特點是先執(zhí)行循環(huán)體,然后判斷條件是否成立。其一般格式為:do循環(huán)體while(表達式);說明:循環(huán)體至少執(zhí)行一次。當(dāng)循環(huán)體有多個語句時必須加花括號{}。3、for語句for語句可以用于循環(huán)次數(shù)已經(jīng)確定的情況,還可用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況。for語句的一般格式for語句的一般格式為:for(表達式1;表達式2;表達式3)循環(huán)體一個循環(huán)體內(nèi)包含另一個完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套。循環(huán)之中還可以套循環(huán),稱為多層循環(huán)。三種循環(huán)(while循環(huán)、do…while循環(huán)和for循環(huán))可以互相嵌套。例如:while(){…for(){…}…}
break語句和continue語句1、break語句break語句可以用在循環(huán)語句和switch語句中。在循環(huán)語句中用來結(jié)束內(nèi)部循環(huán);在switch語句中用來跳出switch語句。2、continue語句continue語句的作用是結(jié)束本次循環(huán),忽略continue后面的語句,進行下一次循環(huán)判定。六、Cx51構(gòu)造數(shù)據(jù)類型1、數(shù)組和數(shù)組單元的基本概念1)數(shù)組將一組排列有序的、個數(shù)有限的變量作為一個整體,用一個統(tǒng)一的名字來表示,則這些有序變量的全體稱為數(shù)組;或者說,數(shù)組是用一個名字代表順序排列的一組數(shù),順序號就是下標(biāo)變量的值。2)數(shù)組單元在同一數(shù)組中,構(gòu)成該數(shù)組的成員稱為數(shù)組單元(或數(shù)組元素、下標(biāo)變量)。C語言中,引用數(shù)組中的某一單元,要指出數(shù)組名和用括號括起來的數(shù)組單元在數(shù)組中的位置(順序號)的下標(biāo)。例如:a[3]代表a數(shù)組中順序號為3的那個單元。3)數(shù)組的維數(shù)下標(biāo)變量中下標(biāo)的個數(shù)稱為數(shù)組的維數(shù)。具有一個下標(biāo)的下標(biāo)變量,構(gòu)成一維數(shù)組。具有兩個下標(biāo)的下標(biāo)變量,構(gòu)成二維數(shù)組。依次類推,三個下標(biāo)的下標(biāo)變量,構(gòu)成三維數(shù)組。有多少個下標(biāo)的下標(biāo)變量,就構(gòu)成多少維的數(shù)組。通常把二維以上的數(shù)組稱為多維數(shù)組。4)一維數(shù)組的定義、引用、初始化一維數(shù)組的定義一維數(shù)組用一個統(tǒng)一的標(biāo)識符,即數(shù)組名來標(biāo)識一組變量(也稱元素),用下標(biāo)來指示數(shù)組中元素的序號。當(dāng)數(shù)組中每個元素只帶有一個下標(biāo)時,此數(shù)組稱為一維數(shù)組。一維數(shù)組的引用使用數(shù)組必須先定義,后引用。引用時只能對數(shù)組元素引用,如a[0],a[i],a[i+1]等,而不能引用整個數(shù)組。在引用時應(yīng)注意以下幾點:(1)由于數(shù)組元素本身等價于同一類型的一個變量,因此,對變量的任何操作都適用于數(shù)組元素。(2)在引用數(shù)組元素時,下標(biāo)可以是整型常數(shù)或表達式,表達式內(nèi)允許變量存在。在定義數(shù)組時下標(biāo)不能使用變量。(3)引用數(shù)組元素時下標(biāo)最大值不能出界。一維數(shù)組的初始化利用賦值語句或輸入語句給數(shù)組元素賦值。C語言還允許在定義數(shù)組時對各數(shù)組元素指定初始值——稱為數(shù)組初始化。(1)數(shù)組初始化形式1例如:將括號內(nèi)整型數(shù)據(jù)0,1,2,3,4分別賦給整型數(shù)組元素a[0],a[1],a[2],a[3],a[4]。可以寫為下面的形式:inta[5]={0,1,2,3,4};(2)數(shù)組初始化形式2例如:對a數(shù)組中所有元素賦初值0。可以寫作下面的形式:inta[10]={0};(3)通過賦初值定義數(shù)組大小例如:inta[]={1,2,3,4,5};等價于:inta[5]={1,2,3,4,5};5)字符數(shù)組字符數(shù)組是用來存放字符的數(shù)組,字符數(shù)組中的一個元素存放一個字符。字符數(shù)組的定義、引用、初始化對字符數(shù)組賦值或數(shù)組初始化時,數(shù)據(jù)使用字符型數(shù)據(jù)或相應(yīng)的ASCII碼值。字符串與字符型數(shù)組
字符串(也稱字符串常量)是用雙引號括起來的若干有效字符序列。在C語言中,字符串可以包含字母、數(shù)字、轉(zhuǎn)義字符等。2、指針的基本概念。指針就是變量的地址。與此對應(yīng),在C語言中使用一類專門的變量——指針變量來存放變量的地址。也就是說,指針變量是存放地址數(shù)據(jù)的變量。
地指針變量變量地址(指針)址指存向入變量變量值指針變量變量的指針就是變量的地址。存放變量地址的變量是指針變量,用來指向另一個變量。1)定義一個指針變量如何定義一個指針變量形式:基類型*指針變量名例如:float*pointer_3;char*pointer_4;2)指針變量的引用指針變量中只能存放地址(指針)。3)指針變量作為函數(shù)參數(shù)函數(shù)的參數(shù)可以是整型、實型、字符型等數(shù)據(jù),還可以是指針類型的。它的作用是將一個變量的地址傳送到另一個函數(shù)中。3、結(jié)構(gòu)體在程序設(shè)計中,把一些關(guān)系密切而數(shù)據(jù)類型不同的數(shù)據(jù)組織在一起,并為其命名一個名字,這類數(shù)據(jù)稱為結(jié)構(gòu)體。結(jié)構(gòu)體,是將若干個類型相同或不同的數(shù)據(jù)組合成一個有機的集合。1)結(jié)構(gòu)體類型定義使用結(jié)構(gòu)體變量前,要先定義該結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體變量。結(jié)構(gòu)體類型定義的一般格式為:
struct結(jié)構(gòu)體名{類型標(biāo)識符成員名列表;類型標(biāo)識符成員名列表;…類型標(biāo)識符成員名列表;};2)結(jié)構(gòu)體變量的定義、引用和初始化《1》結(jié)構(gòu)體變量定義定義結(jié)構(gòu)體變量有三種方法。(1)在定義結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體變量。(2)先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體變量。(3)直接定義結(jié)構(gòu)體變量?!?》結(jié)構(gòu)體變量的引用對結(jié)構(gòu)體變量進行操作時,除了可以對相同類型的結(jié)構(gòu)體變量進行整體賦值外,不可以對一個結(jié)構(gòu)體變量整體賦值。《3》結(jié)構(gòu)體變量的初始化與數(shù)組的初始化類似,結(jié)構(gòu)體變量只能對外部和靜態(tài)結(jié)構(gòu)體變量初始化。初始化數(shù)據(jù)之間要用“,”隔開,不進行初始化的成員項要用“,”跳過。七、Cx51函數(shù)所有的函數(shù)在定義時都是相互獨立的,一個函數(shù)中不能再定義其他函數(shù),即函數(shù)不能嵌套定義,但可以互相調(diào)用。函數(shù)調(diào)用的一般規(guī)則是:主函數(shù)可以調(diào)用其它普通函數(shù)。普通函數(shù)之間也可以互相調(diào)用,但普通函數(shù)不能調(diào)用主函數(shù)。一個c程序的執(zhí)行從main()函數(shù)開始,調(diào)用其它函數(shù)后返回到主函數(shù)main()中,最后在主函數(shù)Main()中結(jié)束整個c程序的運行。
1、函數(shù)的分類從用戶的使用角度分為:庫函數(shù)和用戶自定義函數(shù).1)標(biāo)準(zhǔn)庫函數(shù):C語言提供了豐富的標(biāo)準(zhǔn)函數(shù),即庫函數(shù)。(1)數(shù)學(xué)函數(shù)調(diào)用數(shù)學(xué)庫函數(shù)時,要求程序在調(diào)用數(shù)學(xué)庫函數(shù)前應(yīng)包含下面的頭文件:#include"math.h"(2)字符函數(shù)和字符串函數(shù)調(diào)用字符函數(shù)時,要求程序在調(diào)用字符函數(shù)前應(yīng)包含下面的頭文件:#include"ctype.h"調(diào)用字符串函數(shù)時,要求在源文件中應(yīng)包含下面的頭文件:#include"string.h"(3)輸入輸出函數(shù)調(diào)用輸入輸出函數(shù)時,要求在源文件中應(yīng)包含下面的頭文件#include"stdio.h"(4)動態(tài)分配函數(shù)和隨機函數(shù)調(diào)用動態(tài)分配函數(shù)和隨機函數(shù)時,要求在源文件中應(yīng)包含下面的頭文件:#include"stdl
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年鐵合金爐料項目可行性研究報告
- 廣東省深圳市坪山區(qū)2023-2024學(xué)年五年級上學(xué)期英語期末試卷
- 通信站高透波玻璃鋼接閃桿 絕緣玻璃纖維照明燈桿 CMCE避雷裝置
- 公文基礎(chǔ)知識培訓(xùn)
- 二零二五年度快艇購置與培訓(xùn)服務(wù)合同2篇
- 2025企業(yè)公司年會盛典暨表彰大會(老有意思不止所見主題)活動策劃方案-48正式版
- Unit 4 My Favourite Subject Lesson 2 Section A 2a-2f,Pronunciation 說課稿 2024-2025學(xué)年人教版英語七年級上冊
- 二零二五年度建筑工地安全責(zé)任協(xié)議3篇
- 河北省邯鄲市永年區(qū)2024-2025學(xué)年三年級上學(xué)期期末數(shù)學(xué)試題參考答案
- 人教版歷史與社會八年級(下)第六單元第三課《資產(chǎn)階級革命-英國議會對王權(quán)的勝利》 說課稿設(shè)計
- 新人教版一年級數(shù)學(xué)下冊全冊導(dǎo)學(xué)案
- 2025年中考語文復(fù)習(xí)之現(xiàn)代文閱讀:非連續(xù)性文本閱讀(10題)
- GB/T 9755-2024合成樹脂乳液墻面涂料
- 商業(yè)咨詢報告范文模板
- 2024年度軟件定制開發(fā)合同(ERP系統(tǒng))3篇
- 家族族譜模板
- 家譜修編倡議書范文
- (正式版)JBT 10437-2024 電線電纜用可交聯(lián)聚乙烯絕緣料
- 教科版三年級上冊科學(xué)期末測試卷(二)【含答案】
- A5技術(shù)支持的課堂導(dǎo)入作業(yè)1—問題描述.針對日常教學(xué)中的某一主題針對教學(xué)目標(biāo)、教學(xué)內(nèi)容以及教學(xué)對象用簡短的語言描述當(dāng)前課堂導(dǎo)入環(huán)節(jié)中存在的問題和不足以及借助信息技術(shù)改進課堂導(dǎo)入的必要性
- 國家開放大學(xué)《土木工程力學(xué)(本)》章節(jié)測試參考答案
評論
0/150
提交評論