學(xué)習(xí)c51單片機(jī)筆記本總結(jié)_第1頁(yè)
學(xué)習(xí)c51單片機(jī)筆記本總結(jié)_第2頁(yè)
學(xué)習(xí)c51單片機(jī)筆記本總結(jié)_第3頁(yè)
學(xué)習(xí)c51單片機(jī)筆記本總結(jié)_第4頁(yè)
學(xué)習(xí)c51單片機(jī)筆記本總結(jié)_第5頁(yè)
已閱讀5頁(yè),還剩48頁(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)介

標(biāo)號(hào)引腳第二功能說(shuō)明P3.010RXD P3.111TXD P3.212INT0 外部中斷0P3.313 P3.414 P3.515 P3.616 外部數(shù)據(jù)器寫脈沖(當(dāng)外部擴(kuò)展隨機(jī)讀寫器RAMRAMWEP3.717 外部數(shù)據(jù)讀脈沖(當(dāng)外部擴(kuò)展隨機(jī)讀寫器RAMRAMOEXTAL1、XTAL2外接時(shí)鐘引腳,XTAL1XTAL28051部時(shí)鐘方式,即將XTAL1接地,外部時(shí)鐘信號(hào)從XTAL2腳輸入。外部RAM時(shí),兩個(gè)PSEN脈沖被跳過(guò)不會(huì)輸出ROMROMOE腳相接所加的電平轉(zhuǎn)換是MAX232(實(shí)驗(yàn)板左下角)。STC89C51RC40IPLCC型號(hào)為PLCC,制造工藝為RB8946.1D功能的Flash器,即具有ISP可編程功能 1-----表示內(nèi)部程序空間的大小,1為4KB,2為8KB,3為12KB,即該數(shù)乘上4KB就是內(nèi)部的程序空間大小。程序空間大小決定了一個(gè)所能裝入執(zhí)行代碼的多少。一般來(lái)說(shuō),程序空間越大,價(jià)格也越高,所以我們?cè)谶x擇時(shí)要根據(jù)自己硬件設(shè)備實(shí)現(xiàn)功能所需代碼的大小來(lái)選擇價(jià)格合適的,只要程序能裝得下,同類的不同M表示產(chǎn)品,溫度范圍為-55℃~+150℃。 STICLeadedChipCarrier)帶引線的塑料封裝QFP(QuadFlatPackage)塑料方型扁平式封裝PFP(sticFlatPackage)塑料扁平組件式封裝PGA(PinGridArrayPackage)ZIF(ZeroInsertionsocket)是指零插拔力的插座。BGA(BallGridArrayPackage)球柵陣列封裝PBGA(sricBGA)多層板CBGA(CeramicBGA)陶瓷基板TBGA(TapeBGA)1-2PCB(CarityDownPBGA)基板。指封裝有方型低陷的區(qū)0819 (一般在十六進(jìn)制數(shù)的最后面加上后綴H,表示為十六進(jìn)制數(shù),如AH,DEH等。這里的字母不區(qū)分大小寫,在C語(yǔ)言編程時(shí)要寫成“0xa,0xde”,在數(shù)的最前面加上“0x”表示該數(shù)為十六進(jìn)制數(shù)。0008811A33B44C55D66E77F 器中最小的單位。比位大的單位是字節(jié)(B)81B=8b“/”用在整數(shù)除法中時(shí),10/3=3,求模運(yùn)算也是在整數(shù)中,如10對(duì)3求模即10當(dāng)中含有多少個(gè)整數(shù)的3,即3個(gè)。當(dāng)進(jìn)行“%”求余運(yùn)算,也是在整數(shù)中,如10%3=1,即10當(dāng)中含有整數(shù)倍的3取掉后剩下的數(shù)即為所求余數(shù)。 含 “︱ “》 “《 如果用C語(yǔ)言編寫程序,則擴(kuò)展名必須為.c;如果用匯編語(yǔ)言編寫程序,則擴(kuò)展名必須為 意義:把單片機(jī)內(nèi)部地址0x80處的這個(gè)寄存器重新起名叫P0意義:C51中常用的頭文件:reg51.h,reg52.h,math.h,stdio.h,ctype.h,stdlib.h,absacc.h,intrins.h,reg52.h頭文件的作用:在使用〈〉包含頭文件時(shí),編譯器先進(jìn)入到軟件安裝文件夾處開始搜索這個(gè)頭文件,也就是Keil\C51\INC#include sbit //單片機(jī)P1口的第一void { }件,英文全稱為binary,這兩種文件可以通過(guò)軟件相互轉(zhuǎn)換,其實(shí)際內(nèi)容都是一樣的。鎖存器74HC573引腳DQLHHHLHLLLLXHXXZOE(OUT 1Q- LE(LATCH void {} 低電平;0,2,4,6,8對(duì)應(yīng)的二進(jìn)制是高電平1,二進(jìn)制從右往左數(shù) 在C語(yǔ)言中我們一般把“0”認(rèn)為是“假”,“非0”認(rèn)為是“真”,也就是說(shuō),只要不是0就是真,所以1,2,3等沒有,那么我們就可以直接將大括號(hào)也不寫,再如“while(1while()會(huì)把跟在它后程序時(shí),如果while()內(nèi)部只有一條語(yǔ)句,我們就可以省去大括號(hào),而直接將這條語(yǔ)句跟在它的后面。程序指針就要加1,程序指針就指向下一條要執(zhí)行的指令。 voidmain() { }88-)-)unsigned) long 知識(shí)點(diǎn):for語(yǔ)句unsignedchar 03i1,我們分析執(zhí)行過(guò)程:不用寫出來(lái)),因?yàn)閒or內(nèi)部語(yǔ)句為空,即什么也不執(zhí)行。unsignedchari, #defineuintunsigned sbit uint void { { }}格式:#define新名稱原內(nèi)容“unsignedinti,j;”,取而代之的是“uinti,j;”,方便以后在程序中直接寫簡(jiǎn)短的新名稱,而不必每次都寫煩瑣的由12個(gè)時(shí)鐘周期(6個(gè)狀態(tài)周期)組成。點(diǎn),然后在下面“l(fā)ed1=1;”所在行以同樣方式插入另一個(gè)斷點(diǎn),這兩個(gè)斷點(diǎn)之間的代碼就是這個(gè)兩級(jí)for嵌套語(yǔ)句。型不同,單片機(jī)運(yùn)行時(shí)所需時(shí)間就不同),內(nèi)層for語(yǔ)句中變量恒定值為110時(shí),外層for中變量為多少,這個(gè)for嵌套前子函數(shù),方法如下:將返回值特性、函數(shù)名及后面的小括號(hào)完全,若是無(wú)參數(shù)函數(shù),則小括號(hào)內(nèi)為空;若括號(hào)的后面必須加上分號(hào)“;”。當(dāng)子函數(shù)寫在主函數(shù)前面時(shí),不需要,因?yàn)閷懞瘮?shù)體的同時(shí)就已經(jīng)相當(dāng)于了函數(shù)本身。通俗地講,子函數(shù)的目的是為了編譯器在編譯主程序的時(shí)候,當(dāng)它遇到一個(gè)子函數(shù)時(shí)知道有這樣一個(gè)子函數(shù) #defineuintunsigned sbit void void { { }}void {uinti, }延時(shí)以亮200ms滅800ms的方式閃動(dòng),完整程序代碼如下:(帶參數(shù)函數(shù)的寫法) //52系列單片機(jī)頭文件#defineuintunsignedint sbit void void { { }}void {uinti, }:中原來(lái)的數(shù)據(jù)丟棄,(在一行二進(jìn)制里,如:,左邊一端為最0,右邊一端為最低位1)最低位補(bǔ)0,其他位循環(huán)左移:最(在一行二進(jìn)制里,如:11101010,左邊一端為最1,右邊一端為最低位0)移入最低位,其他循環(huán)右移:最低位移入最(在一行二進(jìn)制里,如:01011110,左邊一端為最0,右邊一端為最低位0),其他 #defineucharunsigned uchar void { { }} //52系列單片機(jī)頭文件 #defineuintunsignedint #defineucharunsigned void uchar void { { 500 }}voiddelayms(uint{uinti,j; //指定i,j為無(wú)符號(hào)整型 }aaaaaa0xfe,二進(jìn)制為,執(zhí)行此函數(shù)時(shí),它將循環(huán)左移一位后為0xfd,0xfdaawhile(1)中的最后一條語(yǔ)句執(zhí)行完后,將返while(1aa0xfd 法),則該位為1,否則為0。 AC為1,否則為0。P-----ACCACC1(如B1),P1。unsignedcharcodetable[]={編碼定義方法與C語(yǔ)言中的數(shù)組定義方法非常相似,不同的地方就是在數(shù)組類型后面多了一個(gè)code關(guān)鍵字,codeunsignedchartable引腳和公共端(位選)各需要1個(gè)74HC573鎖存器,所以總共需要的元件有:6個(gè)數(shù)碼管LED1-LED6,1個(gè)STC89C52單片機(jī),274HC573鎖存器U1、U2,110KΩ(P0口提供上拉電阻)P1。8(公共端)。在操1P00xFE111111108,那么只在h sbit sbit void { //打開U2 //關(guān)閉U2 //打開U1 //關(guān)閉U1 }60F0.5s,循環(huán)下去。程序代碼如下:(uchar循環(huán)用;uint #defineucharunsignedchar #defineuintunsignedintsbit sbit ucharnum; ucarcodetable[]={ void { { { //打開U1 //關(guān)閉U1 }}}voiddelayms(uint {uint }6,0.5s,關(guān)閉它后再來(lái)顯示第一個(gè)數(shù)碼管,一直循環(huán)下去。程序代碼: #defineucharunsignedchar #defineuintunsignedintsbi sbi ucharcode void void{ { //原來(lái)段選數(shù)據(jù)通過(guò)位選鎖存器造成(U2鎖存端) //送位選數(shù)據(jù),二進(jìn)制11111110 }}voiddelayms(uint{uinti,j;}處理(中斷發(fā)生);CPU停止當(dāng)前的工作(中斷響應(yīng)|),轉(zhuǎn)去處理B(中斷服務(wù)A,處理服務(wù)B);待CPU將B處理完畢后,再回到原來(lái)A被中斷的地方繼續(xù)處理A(中斷返回),這一過(guò)程稱為中斷。526(CPU):INT0外部中斷0,P3.2端口線引入,低電平或下降沿引起。INT11,由P3.3T11T1T22T2中斷 012345知識(shí)點(diǎn):中斷允許寄存器中斷允許寄存器用來(lái)設(shè)定各個(gè)中斷源的打開和關(guān)閉,IEA8H,位地址(由低位到中斷允許寄存器- 位地址AFH--ADHACHABHAAHA9H 優(yōu)先級(jí)寄存器IP(InterruptPriority)中斷優(yōu)先級(jí)寄存器在特殊功能寄存器中,字節(jié)地址為B8H,位地址(由低位到)分別是B8H~BFH,機(jī)復(fù)位時(shí)IP全部被清0,各位定義見表:中斷優(yōu)先級(jí)寄存器-----_ 工作方式和功能;TCONT11/12)NTcyt。來(lái)確定定時(shí)器的工作方式及功能選擇。單片機(jī)復(fù)位時(shí)TMOD全部被清0。其各位的定義如下表:位序號(hào)D7D6D5D4D3D2D1位符號(hào)GATEC/TM1M0GATEC/TM1 就需要用軟件清0。0

TF00TF1。IE11請(qǐng)求標(biāo)志。IT11IE00IE1void()interrupt中斷號(hào)using工作組{}如:voidT1_time()interrupt { }工作寄存器中的哪一組,C51012345void #defineucharunsignedchar #defineuintunsignedint sbitled1=P1^0; //LED1對(duì)就的單片機(jī)P1口的第1位ucharnum; //一個(gè)num函數(shù)變量void{ //設(shè)置定時(shí)器0為工作方式1(M1M0為01,即M1M0--工作方式選擇位) /*求余,裝初值11.0529M晶振定時(shí)50ms數(shù)為45872*/ }voidT0_time()interrupt {TH0(65536- /*重裝初值,求模(65536-45872)/256=76,裝入 /*求余=76*256-(65536-45872)=208,裝入TL0;TL0在機(jī)器周期的作用下開始加1計(jì)數(shù), /*num每加1次判斷一次是否到20次(20次*50ms=1000ms=1s) {}}

CPU申請(qǐng)中斷。因此,溢出一次共需要65536us,約等于65.5ms.(也就是說(shuō),中斷一次需要65536us)設(shè)置為定時(shí)器模式時(shí),加1計(jì)數(shù)器是對(duì)內(nèi)部周期計(jì)數(shù)(1個(gè)機(jī)器周期等于12個(gè)振蕩周期,即計(jì)數(shù)器頻率為晶振頻率的1/12)。計(jì)數(shù)值N乘以機(jī)器周期Tcy就是定時(shí)時(shí)間t。(由溢出時(shí)計(jì)數(shù)器的值減去計(jì)數(shù)初值才是加1計(jì)數(shù)器; //單片機(jī)52系列頭文件#defineucharunsignedchar #defineuintunsignedint sbit sbit sbitled1=P1^0; //定義LED1在P1口的第1位ucharcodetable[]={ voiddelayms(uint); voiddisy(uchar,uchar); ucharnum,num1,num2,bai,shi,ge;void{ //設(shè)置01為工作1(00010001)TH0=(65536-45872)/256;*求模;50ms0(19664=4CD0H)*/TL0=(65536-45872)%256;/*求余;4CH=76裝入TH0,D0H=208TL0*/TH1=(65536-45872)/256;/*求模;50ms1(19664=4CD0H)*/TL1=(65536-45872)%256;/*求余;4CH=76TH1,D0H=208TL1*/ {disy(bai,shi,ge);/*數(shù)碼管的百位數(shù)、十位數(shù)、個(gè)位數(shù)循環(huán)}}voiddisy(ucharbai,ucharshi,uchar { //延時(shí)100ms //延時(shí)100ms }voiddelayms(uint {uint }voidT0_time()interrupt { { }}voidT1_time()interrupt { { //百位和十位,求余運(yùn)算,求出num中除去整數(shù)倍100的后余數(shù) }}單片機(jī)的輸入控制用小彈性按鍵較好,單片機(jī)檢測(cè)按鍵的原理是:?jiǎn)纹瑱C(jī)的I/O口既可作為輸出也可作為輸入使用,當(dāng)檢測(cè)按鍵時(shí)用的是它的輸入功能;我們把按鍵的一端接地,另一端與單片機(jī)的某個(gè)I/O口相連,開始時(shí)I/O動(dòng)每秒加1,再次按下key4鍵,數(shù)值停止自動(dòng)加1,保持顯示原數(shù)。 #defineucharunsignedchar #defineuintunsignedint sbit sbit sbit sbit sbit sbitwela=P2^7; //位選端在P2口的第7位ucharcodetabl[]={ voiddelayms(uint); ucharnumt0,num; voidisy(uchar {uchar }voiddelayms(uint {uinti,j; //延時(shí)xms}void { //設(shè)置0為工1(00000001)TH0=(65536-45872)/256;//求模,19664=4CD0H,76=4CH裝入TH0TL0=(65536-45872)%256//求余,D0H=208裝入TL0中 }void { { { }} { //去抖動(dòng)延時(shí)20ms { //num自減1 }} { //去抖動(dòng)延時(shí)20ms { }} { { }}}void { {}}voidT0_time()interrupt {{}} #defineucharunsignedchar #defineuintunsignedint sbit sbitwela=P2^7; ucharcodetabl[]={ voiddelayms(uint {uint //定義延時(shí)變量i }voiddisy(uchar { }void {uchartemp //P3口當(dāng)前狀態(tài)值賦給臨時(shí)變量temp,用于后面計(jì)算 //與運(yùn)算(11111110和11110000的與運(yùn)算) { { {case case0xde: //11011110

case0xbe: //101111110case0x7e: //1111110} { //不斷地P3口數(shù) } }} {{case0xed: //11101101case0xdd: //11011101case0xbd: //10111101case0x7d: //1111101} {}}} {{{case0xeb: //11101011case0xdb: //11011011case0xbb: //10111011case0x7b: //1111011} {}}} {{{case0xe7: //11100111case0xd7: //11010111case //1011case //111}{}}}void { { }} { {

語(yǔ)句2;… 語(yǔ)句 }不需要break語(yǔ)句。

我們?cè)谠O(shè)計(jì)產(chǎn)品時(shí),若用到A/D和D/A,一般這些都提供獨(dú)立的模擬地(AGND)和數(shù)字地(DGND)引腳,為了輸出的模擬電壓正比于輸入的數(shù)字量Dn,從而實(shí)現(xiàn)了從數(shù)字量到模擬量的轉(zhuǎn)換。n8用蜂鳴器分別警報(bào)一聲,完成整個(gè)周期時(shí)間控制在5s左右,循環(huán)變化。 //52系列頭文件#defineucharunsignedchar #defineuintunsignedint //宏定義延時(shí)變量sbitdula=P2^6; //U1鎖存器的鎖存端sbit sbit DAWRsbit sbitbeep=P2^3; voiddelayms(uintxms) {uint //延時(shí)xms}void {ucharval,flag; //設(shè)置P0的輸入數(shù)據(jù)為0 { { { } } { { } }}} 這4個(gè)電容要盡量靠近MAX232,以提高搞干擾能力。實(shí)際應(yīng)用中,1N2可直接連接TTL/CMOS電平的51單片機(jī)串行發(fā)送端TXD;R1OUT,R2OUT可直接連接PC機(jī)的RS-232口的接RXD;T1OUT,T2OUT可直接PCRS-232串口RX;R1I,R2IN可直接連接PCRS-232口的發(fā)送端TXD。如I(T2IN連接單片機(jī)的發(fā)送TXDPCRS-232接收RXD要對(duì)應(yīng)接T1OUT(T2OUT),同時(shí),R1OUT(R2OUT)連接單片機(jī)的RXD引腳,PC機(jī)的RS-232發(fā)送端TXD對(duì)應(yīng)接R1IN2N)引腳。方式:SM0SM1=000的波特率=fosc/12;同步移位寄存器方式(通常用于擴(kuò)展I/O)SM0SM1=011=(2SMOD/32)*(T110(8)SM0SM1=10,方式2的波特率=(2SMOD/64)*fosc;11位異步收發(fā)(9位數(shù)據(jù))SM0SM1=113(2SMOD/32)*(T1溢出率)11(9)fosc為系統(tǒng)晶振頻率,通常為12MHz或11.0592MHz;SMOD是PCON(PowerDown)電源管理寄存器的最(D7);T1溢出率T1溢出的頻率(只要算出T1一次所需要的時(shí)間T,那么T倒數(shù)1/T。)IDL=0:?jiǎn)纹瑱C(jī)處于正常工作狀態(tài)。(IDL=idle)C1.1輸出一行信息: /*standardinput&output的縮寫,意思是有關(guān)標(biāo)準(zhǔn)輸入輸出的信息*/void {printf(“ThisisaC //是換行符,實(shí)現(xiàn)換行;即在輸出“ThisisaCprogram.”后回車行。 standardinput&output.headvoid {inta,b,sum; /*定義變量a和b,指定a和b為整型(int)變量*/ /*賦值語(yǔ)句,使a和b的值分別為123和456*/ /*使sum的值為a+b*/printf(“sumis 1.32 standardinput&output.headvoid {intmax(intx,int /*對(duì)被調(diào)用函數(shù)ma的int 是輸入ab的值,&a,&b中的“&”的含義是“取地址”*/ }intmax(int,x,int {int if(x>y)z=x; elsez=y; }ifxispositivethen 若x為正 printx 輸出x 置t的初值為1 置t的初值為print- 輸出- while 當(dāng)i≤5,執(zhí)行下面操{t*1 print 輸出t inta,b; (指定變量a、b為整型)unsignedshortc,d; longe,f; (指定變量e、f為長(zhǎng)整型) void{inta,b,c,d; unsignedu; /*指定u為無(wú)符號(hào)整型變量*/ /*printf(”a+u=%d,b+u=%d”\n,c,d);*輸出變量c,d(將“a+u=”原樣輸出,“%dcdn”執(zhí)} void {floata,b; //浮點(diǎn)變量只能保證有效數(shù)字是7位 含 char a1=’c’;b1=’d’; //standardinput&output.head標(biāo)準(zhǔn)輸入輸出頭文件voidmain() {char //字符c1的ASCII代碼為十進(jìn)制數(shù)97,即給c1賦值為97 //字符c2的ASCII代碼為十進(jìn)制數(shù)98,即給c2賦值為98 }#include<stdio.h>//standardinput&output.headvoid }

char 如:printf(“howdoyoudo.”); 不能 int float charc inta,b,c=5; /*表示a,b,c為整型變量,但只對(duì)c初始化,c的初值為5*/inta=3,b=3,c=3; /*表示a,b,c的初值都是3*/inta=3; inta; //指定a為整型變量 inta,b,c=5; inta,b,c; /*賦值語(yǔ)句,將3賦給a*/ standardinput&output.headvoid {unsigned //指定a為無(wú)符intb=-1; }等價(jià)于等價(jià)于 表達(dá)式1,表達(dá)式2 值,所以逗號(hào)表達(dá)式“3+5,6+8”的值為14。 例:if(x>y)z=x;elsez=y; puts(輸出字符串)、gets(輸出字符串) void {char //指定a,b,c為字符 a,b,cBOY換行。} 例 例如:printf(“%4d,%4d”,ab);若a=123,b=123456,則輸出結(jié)果為└┘123,123456 例:long //定義a為長(zhǎng)整型變量 x格式符:以十六進(jìn)制數(shù)形式輸出整數(shù).例:printf(”%8o”,a); u格式符:用來(lái)輸出unsigned型數(shù)據(jù),即無(wú)符號(hào)數(shù),以十進(jìn)制整數(shù)形式輸出: //”%c”是格式符,c是變量名s格式符:用來(lái)輸出一個(gè)字符串。例 字符串小于m,,則左補(bǔ)空格。 //standardinput&output.headvoid{floatx,y;(double}例:用scanf函數(shù)輸入數(shù)據(jù): //standardinput&output.headvoid {int “&a、&b、&c”:“&”是“地址運(yùn)算符”,&a指a在內(nèi)存中的地址。a.能被4整除,但不能被100整除,如2008;b.能被4整除,又能被400整除,如2000。#include<stdio.h>//standardinput&output.head標(biāo)準(zhǔn)輸入輸出頭文件voidmain() {intyear,leap; /*指定year,leap為整型變量*/ /*表示要按十進(jìn)制整數(shù)形式輸入year數(shù)據(jù)*/{{}

}printf(“aleap} 語(yǔ)句標(biāo)號(hào):由字母、數(shù)字和下劃線組成,其第一個(gè)字符必須為字母或下劃線;不能用整數(shù)來(lái)用while void {int /*指定i,sum=0為整型函數(shù) i /*循環(huán)設(shè)定值,即i只在<=100數(shù)值內(nèi)循環(huán){ //將sum+i所得的值賦給 /*“i++”,則i的值始終不改變,循環(huán)永不結(jié)束conte語(yǔ)句:其作用為結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定。break void {int {if(n%3= 的地址}}類型說(shuō)明符數(shù)組名[常量表達(dá)式 如:inta[10]//定義了一個(gè)整型號(hào)數(shù)組數(shù)組名為a,此數(shù)組中有10個(gè)元素 void {int //0-9for //換行

例:floata3*4(34列)的數(shù)組,b5*10(510列)二維數(shù)組的初始化 int 100 int 賦初值后數(shù)組各元素為:500 9001000011 //輸入輸出標(biāo)準(zhǔn)頭void //主函{charc[10]={‘I’,a’,’ma //定義數(shù)組長(zhǎng)度為10個(gè)字//或charc[]={“Iama /*數(shù)級(jí)c的長(zhǎng)度不是10而是11;因?yàn)樽址A康淖詈笥?*系統(tǒng)加上一個(gè)”字符串結(jié)束標(biāo)志int //整型函數(shù)變量 //定義0-9 c[i]Iama//或 //用來(lái)輸出一個(gè)字符 //換行回}串“Iamaboy”的,字符串中的字符是逐個(gè)存放到數(shù)組元素中的;字符串的實(shí)際長(zhǎng)度與數(shù)組長(zhǎng)度相等. //輸入輸void //主函{chardiamond[][5]={{***’},{‘****’},{*’int //賦i,j整型變 }字符數(shù)組的輸入輸逐個(gè)字符輸入輸出.用格式符”%c如:charc[]={“”}; );/ void {charstring[]=(或*string=)”Ilove /*賦數(shù)組名string(代表字符數(shù)組的首元素的地址)的值為”Ilove /*%S用來(lái)輸出一個(gè)字符串,并換行,將string的地址里的內(nèi)容以字符串的形式輸出*/ //運(yùn)行結(jié)果:Ilove將字符串a(chǎn)為字符串 //標(biāo)準(zhǔn)輸入輸出void //主函{chara[]=”Iama //賦初int //i //在for語(yǔ)句中,先檢查*(a+1)是否為’\0’ //如果不等于’\0’,表示字符串尚未處理完,就將*(a+1)的值賦給 //再將’\0’給 //將數(shù)組名a地址里的內(nèi)容以字符串printf(“stringb //b //在for語(yǔ)句中,先檢查b[i]是否為’\0’ //將數(shù)組名b[i]地址里的內(nèi)容以一個(gè)字符(c格式符:用來(lái)輸出一個(gè)字符) }

stringais:Iamaboy.stringbisabo如:charstr[]={“ \nBeijing”};

即一般利用gets函數(shù)的目的是向字符數(shù)組輸入一個(gè)字符串。把字符2接到字符1的后面,結(jié)果放在字符數(shù)組1中,函數(shù)調(diào)用后得到一函數(shù)值---字符數(shù)1的地址。例如:charstr1[30]={“People’sRepublic charstr2[]={“ //定義數(shù)組str2的字符 People’sRepublic說(shuō)明:1.字符數(shù)組1必須足夠大,以便容納連接后的新字符串;即字符數(shù)組1必須定義足夠的長(zhǎng)連接前兩個(gè)字符串的后面都有’\0’,連接時(shí)將字符串 后面的’\0’取消,只在新串最后保留’\0’函數(shù):在C語(yǔ)言中,子程序的作用是由函數(shù)來(lái)完成的。一個(gè)C程序可由一個(gè)主函數(shù)和若干個(gè)其它函數(shù)構(gòu)成。由主函數(shù)調(diào)用vidmi()定義函數(shù)的類型為void,意為函數(shù)無(wú)類型,即無(wú)函數(shù)值,也就是說(shuō),執(zhí)行這個(gè)函數(shù)后不會(huì)把任何值帶回an {}有參函數(shù)類型標(biāo)識(shí) 函數(shù)名(形式參數(shù)表 形參{語(yǔ)句部}例如intmax(intx,int /*兩個(gè)形式參數(shù)x和y,它們都是整型{intz; /*函數(shù)體中的部分,指定z為整型*/z=x>y?x:y; /*如果需要從被調(diào)用函數(shù)帶回一個(gè)函數(shù)值(供主調(diào)函數(shù)使用 宏定義:用一個(gè)指定的標(biāo)識(shí)符(即名字)來(lái)代表一個(gè)字符串。#define標(biāo)識(shí)符字符串如:#definePI ”這個(gè)字符串 #defineR #definePI #defineL //L#defineSvoid /*把L,S變量的地址里的內(nèi)容以f格式符(用來(lái)輸出實(shí)數(shù)(包括單、雙精度),以小數(shù)形式輸出)輸出 #definePR #defineNL #defineD“%d” #defineD1DNL#defineD2DDNL#defineD3DDDNL#defineD4DDDDNL#defineS //s格式符:用來(lái)輸出一個(gè)字符void {int charstring[]=””; //把string變量的地址里的內(nèi)容以s格式符(用來(lái)輸出一個(gè)字符串)輸出}1 #ifdef如:#ifdef /*假如計(jì)算機(jī)A已被定義過(guò),則編譯下程序段#defineINTEGER_SIZE 程序段 #defineINTEGER_SIZE 它的作用是若程序所指定的標(biāo)識(shí)符已經(jīng)被#defing命令定義過(guò),則在程序編譯階段編譯程序段1,否則編譯程序段2。其中else部分可以沒有,即 #ifdef標(biāo)識(shí)符#ifndef2。#if 指針---由于通過(guò)地址能找到所需的變量單元,地址指向該變量單元;因此在C語(yǔ)言中,將地址形象化地稱為“指針”,意如 int int /*將變量i的地址存放到指針變量pointer_1中,因此pointer_1就“指向”了變量i*/ /*將變量j的地址存放到指針變量pointer_2中,因此pointer_2就“指向”了變量j*/int int p=&a[0];或P=a /*把a(bǔ)[0]元素的地址賦給指針變量P,也就是使P指向a數(shù)組的第0號(hào)元素;C語(yǔ)言規(guī)定數(shù)組名int int /*所以,P+i是指向a數(shù)組的第i個(gè)元素,a代表數(shù)組首元素的地址,它實(shí)際地址為 a+i*d=1000+3*4=1012,然后從1012地址所指向的float型單元取出元素的值。aa00110a[1][0]12a[1][2]12a[1][2] #define {int /*a34a[3][4]的值 //00 //101 //10 //20 //10} void {int int /*P為指向整型變量的指針變量;定義i為整型變量 }

void {voidcopy_strin

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論