火龍果C語(yǔ)言重難點(diǎn)精選_第1頁(yè)
火龍果C語(yǔ)言重難點(diǎn)精選_第2頁(yè)
火龍果C語(yǔ)言重難點(diǎn)精選_第3頁(yè)
火龍果C語(yǔ)言重難點(diǎn)精選_第4頁(yè)
火龍果C語(yǔ)言重難點(diǎn)精選_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C語(yǔ)言精華作者:劉麗英print函數(shù)1.格式字符(1)u格式%u為unsigned型數(shù)據(jù)以十進(jìn)制整形輸出(2)d格式%d為整形輸出%md.其中m為指定的字段的寬度,如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格,如果數(shù)據(jù)的位數(shù)大于m則按實(shí)際輸出eg:printf("%4d,%4d",a,b);若a=123,b=12345,則輸出結(jié)果為_(kāi)123,12345同理有%mld,%mo(八進(jìn)制輸出),%mx(十六進(jìn)制輸出),%mc(3)s格式%s用來(lái)輸出一個(gè)字符串

%ms%-ms如果字符串小于m,則在m列范圍內(nèi),字符串向左靠,右補(bǔ)空格

%m.ns輸出占有m列,但只取字符串中左端n個(gè)字符。這n個(gè)字符輸出在m列的右側(cè),左補(bǔ)空格%-m.ns輸出占有m列,但只取字符串中左端n個(gè)字符。這n個(gè)字符輸出在m列的左側(cè),右補(bǔ)空格。若n>m則m自動(dòng)取n值,即保證n個(gè)字符正常輸出(4)f格式%m.nf一共占m列,其中有n為小數(shù)。如果數(shù)值長(zhǎng)度小于m則左端補(bǔ)空格。%-m.nf基本同上,只是輸出數(shù)值向左端靠齊,右端補(bǔ)空格(5)e格式以指數(shù)形式輸出實(shí)數(shù)%e數(shù)字部分的小數(shù)位為6位,指數(shù)部分占5位(如e+002),數(shù)值按規(guī)范化指數(shù)形式輸出(即小數(shù)點(diǎn)前必須有而且只有1位非零數(shù)字)。例如:printf("%e",123.456);輸出結(jié)果為1.234560e+002所輸出實(shí)數(shù)共占13列(不同系統(tǒng)的規(guī)定略有不同)%m.ne與%-m.ne中的m,n,"-"與前面的相同。此時(shí)的n指的是擬輸出的數(shù)據(jù)的小數(shù)部分(又稱(chēng)尾數(shù))的小數(shù)位數(shù)若f=123.456,則printf("%e--%10e--%10.2e--%.2e--%-10.2e",f,f,f,f,f);輸出結(jié)果如下1.234560e+002--1.234560e+002---1.23e+002--1.23e+002--1.23e+002-

13列13列10列9列10列條件表達(dá)式條件表達(dá)式,C中唯一的一個(gè)三目表達(dá)式

表達(dá)式1?表達(dá)式2:表達(dá)式3例1if(a>b)優(yōu)先級(jí)別比關(guān)系運(yùn)算符和算術(shù)運(yùn)算符都低max=a;a>b?a:b+1;<==>a>b?a:(b+1);<=\=>(a>b?a:b)+1;else<===>max=(a>b)?a:b;<===>max=a>b?a:b;max=b;結(jié)合方向自右至左表達(dá)式2和3不僅可以是數(shù)值表達(dá)式,還可以是賦值表達(dá)式或函數(shù)表達(dá)式;表達(dá)式1,2,3的類(lèi)型可以都不同。eg2:a>b?(a=100):(b=123);a>b?printf("%d",a):printf("%d",b);x?'a':'b';x>y?1:1.5;數(shù)據(jù)類(lèi)型浮點(diǎn)小數(shù)1.指數(shù)形式:包含整數(shù)部分、字母E或e和階數(shù)。如2.48E23。注意尾數(shù)部分不能省、階碼必須是整數(shù)2.十進(jìn)制小數(shù):包含整數(shù)部分、小數(shù)點(diǎn)和小數(shù)部分。其中小數(shù)點(diǎn)不能省。文字?jǐn)?shù)據(jù)的表示1.單個(gè)字符:?jiǎn)蝹€(gè)字符的表現(xiàn)形式是由單引號(hào)括起來(lái)的一個(gè)字符,如'A'。其中單引號(hào)、雙引號(hào)、反斜杠的表現(xiàn)形式比較特殊,分別是'\'','\"','\\'。數(shù)據(jù)類(lèi)型轉(zhuǎn)換1.強(qiáng)制類(lèi)型轉(zhuǎn)換(類(lèi)型)表達(dá)式強(qiáng)制類(lèi)型裝換最主要的用途一是滿(mǎn)足一些運(yùn)算對(duì)類(lèi)型的要求,例如求余運(yùn)“%”要求運(yùn)算符兩側(cè)的數(shù)據(jù)類(lèi)型為整型,(int)2.5%3二是防止丟失整數(shù)除法中的小數(shù)部分。break語(yǔ)句的的作用:1.用于switch語(yǔ)句中,從中推出switch語(yǔ)句。2.用于循環(huán)語(yǔ)句中,從循環(huán)體內(nèi)直接退出循環(huán)。注意:對(duì)于嵌套的循環(huán)語(yǔ)句和switch語(yǔ)句,break語(yǔ)句的執(zhí)行只能退出直接包含break的那層結(jié)構(gòu)函數(shù)C語(yǔ)言的函數(shù)可以分為三類(lèi):主函數(shù)main()、庫(kù)函數(shù)(如,printf()scanf())、和用戶(hù)自定義函數(shù)自定義的函數(shù)類(lèi)型

函數(shù)類(lèi)型與return語(yǔ)句的返回值類(lèi)型相同,當(dāng)函數(shù)類(lèi)型缺省時(shí)默認(rèn)為整形,如果函數(shù)無(wú)返回值用void。函數(shù)體可以為空。return(表達(dá)式);表達(dá)式可為一個(gè)變量、常量、表達(dá)式,函數(shù)類(lèi)型決定返回值類(lèi)型函數(shù)的調(diào)用

實(shí)參與形參之間是“單向的值傳遞”實(shí)參可以是常量、變量表達(dá)式或函數(shù)。函數(shù)遞歸調(diào)用直接或間接地調(diào)用函數(shù)自身為函數(shù)遞歸調(diào)用。

遞歸調(diào)用必須可以滿(mǎn)足一定條件時(shí)結(jié)束調(diào)用,否則無(wú)限的遞歸調(diào)用將導(dǎo)致程序無(wú)法結(jié)束。數(shù)組一、一維數(shù)組1.一維數(shù)組的定義數(shù)組類(lèi)型的所有元素都是同一種類(lèi)型按順序存放在一個(gè)連續(xù)的存儲(chǔ)空間中,下表從0開(kāi)始順序編號(hào)。數(shù)組元素的個(gè)數(shù)是一個(gè)固定值,可以是整型常量、符號(hào)常量或者整型常量表達(dá)式。定義數(shù)組時(shí),系統(tǒng)將按照數(shù)組類(lèi)型和個(gè)數(shù)數(shù)組元素,分配一段連續(xù)的存儲(chǔ)空間存儲(chǔ),絕對(duì)不能使用變量或者變量表達(dá)式來(lái)表示元素的個(gè)數(shù),大多數(shù)情況下不要省略元素的個(gè)數(shù)(形參和數(shù)組初始化時(shí)除外)。2。一位數(shù)組的引用C語(yǔ)言規(guī)定只能逐個(gè)引用數(shù)組元素,而不能一次引用整個(gè)數(shù)組.C語(yǔ)言不檢查邊界,所以當(dāng)超越邊界是系統(tǒng)將不會(huì)提示錯(cuò)誤,但運(yùn)行時(shí)可能導(dǎo)致其他變量甚至程序被破壞。數(shù)組元素的使用方法與同類(lèi)型的變量使用方法相同,可以參加各種運(yùn)算,常用于循環(huán)語(yǔ)句來(lái)處理二、多維數(shù)組1.多(以二維為例)維數(shù)組的定義類(lèi)型標(biāo)示符數(shù)組名[元素個(gè)數(shù)1][元素個(gè)數(shù)2]...[元素個(gè)數(shù)N];二維數(shù)組中元素的存放順序是按行存放的;多維數(shù)組的存儲(chǔ)順序?yàn)椋鹤钭筮叺南聵?biāo)變化最慢,越往右邊變化越快。三、數(shù)組作為函數(shù)參數(shù)數(shù)組中的元素和數(shù)組名都可以作函數(shù)參數(shù),但效果不一樣。2.一維數(shù)組元素作為函數(shù)參數(shù)一維數(shù)組中元素作為函數(shù)實(shí)參,與同類(lèi)型的簡(jiǎn)單變量作為實(shí)參一樣是單向的值傳遞,即數(shù)組元素的值傳給形參,形參的改變不影響作為數(shù)組元素的實(shí)參,3數(shù)組名作為函數(shù)參數(shù)

此時(shí)形參和實(shí)參都是數(shù)組名(或者是表示地址的指針變量,見(jiàn)第十講),傳遞的是整個(gè)數(shù)組(數(shù)組的起始地址),即形參數(shù)組和實(shí)參數(shù)組完全等同,是存放在同一空間的同一個(gè)數(shù)組。這樣形參數(shù)組修改時(shí)是參數(shù)組也同時(shí)被改變了。形參中的數(shù)組要定義,并且要求與實(shí)參數(shù)組類(lèi)型一致,但是形參數(shù)組的大小(即元素個(gè)數(shù))可以小于等于實(shí)參數(shù)組的個(gè)數(shù),甚至可以省略,而有一個(gè)專(zhuān)門(mén)的形參傳遞元素個(gè)數(shù)。

變量類(lèi)別與編譯預(yù)處理一、全局變量與局部變量C語(yǔ)言根據(jù)變量的作用域不同,將變量分為局部變量和全局變量局部變量:在函數(shù)內(nèi)部定義的變量,它只在定義它的函數(shù)內(nèi)部有效。全局變量:在所有函數(shù)的外部定義的變量,作用范圍是從定義變量的位置開(kāi)始到源程序結(jié)束,即全局變量可以被在其定義位置之后的其它函數(shù)所共享。全局變量主要用于函數(shù)之間數(shù)據(jù)的傳遞。具體應(yīng)用在兩方面:一是函數(shù)可以將結(jié)果保存在全局變量中,這樣函數(shù)得到多個(gè)執(zhí)行結(jié)果,而不局限于一個(gè)返回值;二是由于函數(shù)可以直接使用全局變量的數(shù)據(jù),從而減少了函數(shù)調(diào)用時(shí)的參數(shù)。

用extern、static聲明的全局變量:

如果組成這一個(gè)程序的幾個(gè)文件需要用到同一個(gè)全局變量,只要在其他引用該全局變量的源程序文件中說(shuō)明該全局變量為extern即可。反之,如果希望一個(gè)源程序文件中的全局變量?jī)H限于該文件使用,只要在該全局變量定義時(shí)的類(lèi)型說(shuō)明前加一個(gè)static。二、自動(dòng)變量、靜態(tài)變量和寄存器變量C語(yǔ)言根據(jù)變量的存儲(chǔ)空間的不同,可以分為寄存器變量、靜態(tài)變量、和自動(dòng)變量。自動(dòng)變量:動(dòng)態(tài)變量的存儲(chǔ)空間為內(nèi)存中的動(dòng)態(tài)數(shù)據(jù)區(qū)。自動(dòng)變量的類(lèi)型修飾符auto放在變量的類(lèi)型說(shuō)明之前。但auto一般不寫(xiě)的。在函數(shù)體內(nèi)或者復(fù)合語(yǔ)句內(nèi)定義的局部變量只要不專(zhuān)門(mén)說(shuō)明是static存儲(chǔ)類(lèi)型都屬于自動(dòng)變量,采用動(dòng)態(tài)存儲(chǔ)方式。特點(diǎn)是當(dāng)程序和執(zhí)行到自動(dòng)變量的作用域時(shí),才為自動(dòng)變量分配存儲(chǔ)空間,并且定義自動(dòng)變量的函數(shù)執(zhí)行結(jié)束后,程序?qū)⑨尫抛詣?dòng)變量的空間,留給其他自動(dòng)變量使用。靜態(tài)變量:靜態(tài)變量的存儲(chǔ)空間為內(nèi)存的靜態(tài)數(shù)據(jù)區(qū),該區(qū)域中的數(shù)據(jù)在整個(gè)程序的運(yùn)行期間一直占用這些存儲(chǔ)空間,知道整個(gè)程序運(yùn)行結(jié)束。所有的全局變量都是靜態(tài)變量,而局部變量只有加上類(lèi)型修飾符static,才為局部靜態(tài)變量。

靜態(tài)變量的特點(diǎn)是在程序的整個(gè)執(zhí)行過(guò)程中始終存在,但在它作用域之外不能使用,即靜態(tài)變量的生存期就是整個(gè)運(yùn)行期。在選擇使用靜態(tài)變量還是動(dòng)態(tài)變量時(shí),可以考慮以下兩點(diǎn):一是如果需要在兩次函數(shù)調(diào)用之間保持上一次函數(shù)調(diào)用結(jié)果,可以使用局部靜態(tài)變量;二是如果在每次掉用函數(shù)時(shí)都必須對(duì)局部變量初始化,選擇自動(dòng)變量。但是實(shí)際上局部靜態(tài)變量占用內(nèi)存時(shí)間較長(zhǎng),并且可讀性差,因此,除非必要,盡量避免使用局部變量。寄存器變量:為提高運(yùn)算速度,C語(yǔ)言允許將一些頻繁使用的局部變量定義為寄存器變量,這樣程序盡可能地為它分配寄存器存放,而不用內(nèi)存。三、宏定義

C語(yǔ)言提供的預(yù)處理命令主要有:宏定義、文件包含和條件編譯。其中宏定義分為帶參數(shù)的宏定義和不帶參數(shù)的宏定義。1.不帶參數(shù)的宏定義

#define標(biāo)識(shí)符字符串

它的作用是在編譯預(yù)處理時(shí),將源程序中所有的標(biāo)識(shí)符替換成字符串

注意:(1)宏名一般用大寫(xiě)字母,以便與變量名區(qū)分

(2)宏名的有效范圍是從定義為止到文件結(jié)束,如果需要終止宏定義的作用域,可以用#undef命令

(3)宏定義時(shí)可以引用已經(jīng)定義的宏名(4)對(duì)程序中用雙引號(hào)括起來(lái)的字符串內(nèi)的字符,不進(jìn)行宏的替換操作。2.帶參數(shù)的宏定義

#define標(biāo)識(shí)符(參數(shù)表)字符串

它的作用是在編譯預(yù)處理時(shí),將源程序中所有標(biāo)識(shí)符替換成字符串,并且將字符串中的參數(shù)用實(shí)際參數(shù)替換。注意:(1)在宏定義時(shí),宏名和參數(shù)之間不能有空格(2)一般在宏定義時(shí),字符串中的形式參數(shù)外面加一個(gè)小括號(hào)。指針(一)10.1地址和指針計(jì)算機(jī)內(nèi)存是以字節(jié)為單位的存儲(chǔ)空間。內(nèi)存的每一個(gè)字節(jié)都有一個(gè)唯一的編碼,這個(gè)編碼就稱(chēng)為地址。凡是放在內(nèi)存中的程序和數(shù)據(jù)都有一個(gè)地址。當(dāng)C程序中定義一個(gè)變量時(shí),系統(tǒng)就分配一個(gè)帶有唯一地址的存儲(chǔ)單元來(lái)存儲(chǔ)這個(gè)變量。例如,若有下面的變量定義:chara='A';intb=88;longc=89;系統(tǒng)經(jīng)根據(jù)變量的類(lèi)型分別為a、b、c分配1個(gè)、2個(gè)、4個(gè)字節(jié)的存儲(chǔ)單元,此時(shí)變量所占存儲(chǔ)單元的第一個(gè)字節(jié)的地址就是變量的地址。程序?qū)ψ兞康淖x取操作(即變量的引用),實(shí)際上是對(duì)變量所在空間寫(xiě)入或取出數(shù)據(jù)。通過(guò)變量名直接引用變量,成為“直接引用”方式,這種引用方式是由系統(tǒng)自動(dòng)完成變量名與其存儲(chǔ)地址之間的轉(zhuǎn)換。此外,C語(yǔ)言中還有另一種稱(chēng)為“間接引用”的方式。他首先將變量的地址存放在一個(gè)變量(存放地址的變量稱(chēng)為指針)中,然后通過(guò)三、指針變量作為函數(shù)參數(shù)

在C語(yǔ)言中,函數(shù)參數(shù)可以是指針類(lèi)型。當(dāng)指針變量作函數(shù)參數(shù),其作用是將一個(gè)變量的地址傳送到另一個(gè)函數(shù)中。此時(shí)形參從實(shí)參獲得了變量的地址,即形參和實(shí)參指向同一個(gè)變量,當(dāng)形參指向的變量發(fā)生變化時(shí),實(shí)參所知的變量也隨之變化。10.3指針與一維數(shù)組一、指向數(shù)組元素的指針變量1.定義與賦值這種定義方式與指向變量的指針的定義相同。例如:inta[5],*p;/*指針變量可以p可以指向任意的整型變量p=&a[0];因此也可以指向數(shù)組a的任意元素*/表示p指向數(shù)組的第一個(gè)元素a[0]。因?yàn)閿?shù)組名代表數(shù)組的地址,也是第一個(gè)數(shù)組的地址。因此上面的賦值語(yǔ)句p=&a[0];<=>p=a;指向數(shù)組元素的值也可以在定義時(shí)賦初值。2.引用如有以下的定義和賦值:inta[5],*p;p=&a[1];即指針變量p指向數(shù)組元素a[1],則可以通過(guò)指針運(yùn)算符“*”來(lái)對(duì)數(shù)組元素進(jìn)行引用。例如:*p=10;表示對(duì)p所指向的數(shù)組元素a[1]賦值,上式等價(jià)于a[1]=10;引用一個(gè)數(shù)組元素可以有兩種方法:(1)下標(biāo)法,如a[i]。(2)指針?lè)?,?(p+i)。二、數(shù)組名作函數(shù)參數(shù)存放變量地址的指針變量來(lái)引用變量。一個(gè)變量的地址稱(chēng)為該變量的指針。用來(lái)存放一個(gè)變量地址的變量稱(chēng)為指針變量。當(dāng)指針變量p的值為某變量的地址時(shí),可以說(shuō)指針變量p指向該變量10.2指向變量的指針變量一、指針變量和其他變量一樣要先定義在使用,定義形式為:類(lèi)型名*指針變量名;例如:int*p;float*q;char*t;類(lèi)型名表示指針變量所指向的變量的類(lèi)型,而且只能指向這種類(lèi)型的變量。指針變量也允許在定義是進(jìn)行初始化。二、指針變量的引用指針變量的兩個(gè)運(yùn)算符:(1)&取地址運(yùn)算符(2)*指針運(yùn)算符例如:&a表示變量a的地址,*p表示指針變量p指向的變量。關(guān)于指針的引用有兩點(diǎn)需要注意:(1)指針變量是用來(lái)存放地址的,不要給指針變量賦常數(shù)值。(2)指針變量沒(méi)有指向確定地址前,不要對(duì)他所指的對(duì)象賦值。

在函數(shù)調(diào)用時(shí),是把實(shí)參數(shù)組的首地址傳遞給形參數(shù)組,這樣形參數(shù)組的元素發(fā)生變化時(shí)實(shí)參數(shù)組的元素也發(fā)生了變化。如果我們令一個(gè)指針變量指向數(shù)組的第一個(gè)元素,或者等于數(shù)組名,此時(shí)數(shù)組名和指針變量的含義相同,都表示數(shù)組的首地址。所以實(shí)參和形參使用數(shù)組名時(shí)可以用指針變量替換。

以下列出實(shí)參和形參使用數(shù)組名或指針變量的四種情況:

實(shí)參:數(shù)組名數(shù)組名指針變量指針變量形參:數(shù)組名指針變量數(shù)組名指針變量三、指向數(shù)組元素的指針變量作函數(shù)參數(shù)雖然數(shù)組名與指向數(shù)組首地址的指針變量都可以作為函數(shù)參數(shù),但是由于指針變量不僅可以指向數(shù)組的首地址,也可以指向數(shù)組中任意一個(gè)元素,所以指向數(shù)組元素的指針變量作函數(shù)參數(shù)的作用范圍遠(yuǎn)遠(yuǎn)大于數(shù)組名作函數(shù)參數(shù)。10.4指針與字符串一、指向字符串的指針變量C語(yǔ)言中,字符串是通過(guò)一維字符數(shù)組來(lái)存儲(chǔ)的。因此,可以使用指向字符數(shù)組的指針變量來(lái)實(shí)現(xiàn)字符串操作。由于字符串是按照字符數(shù)組的形式存儲(chǔ)的,所以對(duì)字符串中字符的引用也可以用下標(biāo)法或指針?lè)ā6?、字符串作函?shù)參數(shù)將字符串作函數(shù)參數(shù)傳遞,可以使用字符數(shù)組名或指向字符串的指針變量做參數(shù)。與上一節(jié)數(shù)組名作函數(shù)參數(shù)類(lèi)似,實(shí)參和形參的對(duì)應(yīng)情況也有四種。實(shí)參:數(shù)組名數(shù)組名指針變量指針變量形參:數(shù)組名指針變量數(shù)組名指針變量指針(二)11.1返回指針的函數(shù)定義的一般形式為:

類(lèi)型名*函數(shù)名(參數(shù)表);11.2指向函數(shù)的指針一、定義的一般形式為:

類(lèi)型名(*指針變量)();二、指向函數(shù)的指針的引用C語(yǔ)言規(guī)定函數(shù)名就是函數(shù)的入口地址。所以當(dāng)指向函數(shù)的指針等于函數(shù)名時(shí),表示該指針變量指向函數(shù)。此時(shí)可以通過(guò)指向函數(shù)的指針變量調(diào)用該函數(shù)。即一般調(diào)用函數(shù)的形式是

函數(shù)名(實(shí)參表)改為指向函數(shù)的指針變量調(diào)用函數(shù)時(shí),調(diào)用形式變?yōu)?/p>

(*指針變量名)(實(shí)參表)

指向函數(shù)的指針變量在使用時(shí)要注意:由于這類(lèi)指針變量等于一個(gè)函數(shù)的入口地址,所以它們做加減運(yùn)算是沒(méi)有意義的。11.3指針數(shù)組指針數(shù)組的定義的一般形式:

類(lèi)型名*數(shù)組名[常量表達(dá)式];指針數(shù)組的主要用于管理同種類(lèi)型的指針,其中最常用于處理若干個(gè)字符串(如二維字符串)的操作。11.4指針與多維數(shù)組

不帶任何下標(biāo)的二維數(shù)組名表示二維數(shù)組的起始地址,對(duì)其進(jìn)行加法操作時(shí)則表示作為其元素的一個(gè)一維數(shù)組(即二維數(shù)組一行)的起始地址。只帶一維下標(biāo)的二維數(shù)組名表示作為其元素的的一個(gè)一維數(shù)組(即二維數(shù)組一行)的起始地址,對(duì)其進(jìn)行加法操作時(shí)表示該一維數(shù)組(即二維數(shù)組一行)的一個(gè)元素的地址。一、指向二維數(shù)組元素的指針變量在C語(yǔ)言中指針即是地址,如果指針變量等于只帶一維下標(biāo)的二維數(shù)組名,他的定義、賦值、引用與指向一維數(shù)組元素的指針變量形式相同,例如inta[2][3],*p;p=a[0];此時(shí)p指向一維數(shù)組a[0]的起始地址,即p,a[0],&a[0][0]相同對(duì)其進(jìn)行加法操作時(shí)p+1等同于a[0]+1,都指向數(shù)組元素a[0][1]。所以*(p+1)等于元素a[0][1]的值。指向二維數(shù)組中一維數(shù)組的指針變量C語(yǔ)言規(guī)定一種指針變量,如果該指針指向不帶任何下標(biāo)的二維數(shù)組名,指針變量指向作為二維數(shù)組元素的一個(gè)一維數(shù)組(即二維數(shù)組的一行),這樣對(duì)指針變量進(jìn)行加減操作則指針將在二維數(shù)組的行上移動(dòng)。這種指針變量的定義形式如下:類(lèi)型符(*指針變量名)[指向的一維數(shù)組元素的個(gè)數(shù)]那么對(duì)于一個(gè)2行3列組成的二維數(shù)組a[2][3],如果指針變量p指向這個(gè)二維數(shù)組中包含3個(gè)元素的一行一維數(shù)組則指針變量p的定義形式和賦值形式如下:inta[2][3],(*p)[3];p=a;此時(shí)p指向二維數(shù)組a的起始地址。對(duì)其進(jìn)行加法操作p+1等同于a+1,指向包含3個(gè)元素的一維數(shù)組a[1]。所以*(p+1)等于一維數(shù)組名a[1]+1,所以*(*(p+1)+1)等于a[1][1]。指向數(shù)組的指針變量在使用時(shí),要注意與元素是指針類(lèi)型的指針數(shù)組的區(qū)別。例如:int(*q)[3],*p[3];q是指向一個(gè)包含3個(gè)整形元素的一維數(shù)組的指針變量,p是一個(gè)由p[0],p[1],p[2]共3個(gè)指向整形數(shù)據(jù)的指針組成的一維數(shù)組。結(jié)構(gòu)體、共用體和枚舉類(lèi)型結(jié)構(gòu)體類(lèi)型12.1一、結(jié)構(gòu)體的定義形式:struct結(jié)構(gòu)體{類(lèi)型名1成員名1;類(lèi)型名2成員名2;......類(lèi)型名n成員名n;};其中struct是關(guān)鍵字,是結(jié)構(gòu)體類(lèi)型的標(biāo)志。定義結(jié)構(gòu)體類(lèi)型的變量有三種方法:1.先定義結(jié)構(gòu)體類(lèi)型在定義變量。2.定義類(lèi)型的同時(shí)定義變量。3.直接定義結(jié)構(gòu)體類(lèi)型變量,省略類(lèi)型名。二、結(jié)構(gòu)體變量初始化將結(jié)構(gòu)體變量個(gè)成員的初值順序地放在一對(duì)大括號(hào)中,并用逗號(hào)分隔,對(duì)結(jié)構(gòu)體類(lèi)型變量賦初值時(shí),按每一個(gè)成員在結(jié)構(gòu)體中的順序一一對(duì)應(yīng)賦值。三、結(jié)構(gòu)體變量引用對(duì)結(jié)構(gòu)體變量的引用可以分為對(duì)結(jié)構(gòu)體變量中成員的引用和對(duì)整個(gè)結(jié)構(gòu)體的引用。一般對(duì)結(jié)構(gòu)的變量的操作是以成員為單位進(jìn)行的。(1)對(duì)結(jié)構(gòu)體變量中成員的引用引用的一般形式為:結(jié)構(gòu)體變量.成員名“.”是成員運(yùn)算符,他在所有運(yùn)算符中優(yōu)先級(jí)最高。(2)對(duì)整個(gè)結(jié)構(gòu)體變量的引用相同類(lèi)型的結(jié)構(gòu)體變量之間可以進(jìn)行整體賦值。注意:結(jié)構(gòu)體變量只允許整體賦值其它操作如輸入、輸出等必須通過(guò)引用結(jié)構(gòu)體變量的成員進(jìn)行相應(yīng)的操作。

12.2結(jié)構(gòu)體數(shù)組一、結(jié)構(gòu)體數(shù)組定義定義結(jié)構(gòu)體數(shù)組的方法和定義結(jié)構(gòu)變量的方法一樣,只是必須說(shuō)明其為數(shù)組。定義結(jié)構(gòu)體變量的三種方法都可以用來(lái)定義結(jié)構(gòu)體數(shù)組。二、結(jié)構(gòu)體數(shù)組的初始化和一般數(shù)組一樣結(jié)構(gòu)體數(shù)組也可以進(jìn)行初始化。數(shù)組每個(gè)元素的初值都放在一對(duì)大括號(hào)中,括號(hào)中依次排列元素個(gè)成員的初始值。三、結(jié)構(gòu)體數(shù)組的引用對(duì)結(jié)構(gòu)體數(shù)組的引用一般是對(duì)數(shù)組元素的成員進(jìn)行引用。引用只要遵循對(duì)數(shù)組元素的引用規(guī)則和對(duì)結(jié)構(gòu)體變量成員的引用規(guī)則即可。#include<stdio.h>#include<string.h>structperson{ charname[20]; intcount;}leader[3]={"li",0,"zhang",0,"wang",0};voidmain(){ inti,j; charname[20]; for(j=0;j<=5;j++) { scanf("%s\n",name[j]); for(i=0;i<3;i++) {

if(strcmp(name,leader[i].name)==0) { leader[i].count++; } } }

for(i=0;i<3;i++) printf("%s:%d\n",leader[i].name,leader[i].count);}指向結(jié)構(gòu)體數(shù)組的指針#include<stdio.h>structstudent{ intnum; charname[20]; charsex; intage;};structstudentxinke[3]={01,"吳衡",'M',19,02,"邱利鶴",'M',18,03,"曹曉",'M',19};voidmain(){ structstudent*p; p=xinke; inti; printf("NUMNAMESEXAGE\n"); for(i=0;i<3;i++) { printf("%-8d%-5s%9c%9d\n",p->num,p->name,p->sex,p->age); p++; }}結(jié)構(gòu)體變量和指向結(jié)構(gòu)體變量的指針作函數(shù)參數(shù)#include<stdio.h>#include<string.h>#defineFORMAT"%d\n%s\n%f\n%f\n%f\n"structstudent{ intnum; charname[20]; floatscore[3];};voidmain(){ voidprint(structstudentstu); structstudentxinke; xinke.num=04;

strcpy(,"fuguoqing");不能用[20]="fuguoqing";

xinke.score[0]=88; xinke.score[1]=89;不能用xinke[3]={88,89,95}; xinke.score[2]=95; print(xinke);}voidprint(structstudentstu){ printf(FORMAT,stu.num,,stu.score[0],stu.score[1],stu.score[2]);}#include<stdio.h>#include<string.h>#defineFORMAT"%d\n%s\n%f\n%f\n%f\n"structstudent{ intnum; charname[20]; floatscore[3];}xinke={04,"fuguoqing",88,89,95};voidmain(){ voidprint(structstudent*stu);

structstudent*p; p=&xinke; print(p);或則直接為print(&xinke);}voidprint(structstudent*stu){ printf(FORMAT,(*stu).num,(*stu).name,(*stu).score[0],(*stu).score[1],(*stu).score[2]);}共用體12.3一、共用體類(lèi)型及其變量的定義

union共用體名{類(lèi)型名1成員名1;類(lèi)型名2成員名2;......類(lèi)型名n成員名n;};其中,union是關(guān)鍵字,是共用體的類(lèi)型標(biāo)志。共用體類(lèi)型變量的定義也有三種方法:1.先定義共用體類(lèi)型,在定義變量。2.定義類(lèi)型的同時(shí)定義變量。

3.直接定義共用體類(lèi)型變量。二、共用體變量的引用共用體類(lèi)型變量也必須先定義在使用。不能直接引用結(jié)構(gòu)體變量本身,只能引用結(jié)構(gòu)體變量成員。引用的一般形式為:共用體變量名.成員名共用體變量的每一個(gè)成員也可以像普通變量一樣進(jìn)行其類(lèi)型允許的各種操作。但要注意:由于共用體類(lèi)型采用的是覆蓋技術(shù),因此共用體變量中起作用的總是最后一次存放的成員變量的值。共用體變量可以作為結(jié)構(gòu)體變量的成員,結(jié)構(gòu)體變量也可以作為共用體變量的成員,并且共用體類(lèi)型也可以定義數(shù)組。注意:不能對(duì)共用體變量進(jìn)行初始化。不能將共用體變量作為函數(shù)參數(shù)和返回值枚舉類(lèi)型12.5一、枚舉類(lèi)型及其變量的定義enmu枚舉名{枚舉元素1,枚舉元素2,......};其中,enum是關(guān)鍵字,是枚舉類(lèi)型的標(biāo)志。例如:enumweekday{sun,mon,tue,wed,thu,fri,sat};枚舉類(lèi)型變量的定義有兩種方法:1.先定義枚舉類(lèi)型,在定義變量。enumweekdayworkday,week-end;2.直接定義枚舉變量。enumweekday{sun,mon,tue,wed,thu,fri,sat}workday,week-end;workday和week-end被定義為枚舉變量,它們的值只能是sun到sat之一。

說(shuō)明:(1)在C編程中,將枚舉元素作為常量處理,所以稱(chēng)為枚舉常量。因此不能對(duì)他們賦值。例如:sun=0;mon=1;是錯(cuò)誤的(2)枚舉元素是被處理成一個(gè)整型常量的,他的值取決于定義時(shí)各枚舉元素排列的先后順序。第一個(gè)枚舉元素的值為0,第二個(gè)為1,,依次順序加1。如果有賦值語(yǔ)句:workday=mon;workday的值為1.這個(gè)整數(shù)的值是可以輸出的。例如:printf("%d",wokeday);將輸出1.二、枚舉變量的基本操作1.枚舉變量賦值只能給枚舉變量賦枚舉常量。不能直接給枚舉變量賦整型值,但可以通過(guò)將整型值強(qiáng)制轉(zhuǎn)換成枚舉形賦值。workday=(enumweekday)2;它相當(dāng)于吧順序號(hào)為2的枚舉元素賦值給workday,相當(dāng)于wokday=tue;2.枚舉元素的判斷比較枚舉元素可以用來(lái)做判斷比較。例如:

if(workday==mon)...if(workdau>sun)...3.枚舉變量只能通過(guò)賦值語(yǔ)句得到值,不能通過(guò)輸入語(yǔ)句直接輸入數(shù)據(jù)。也不能使用輸出語(yǔ)句直接輸出枚舉元素,可以通過(guò)switch語(yǔ)句將枚舉元素以字符串形式輸出應(yīng)用舉例:口袋中有紅,黃,藍(lán),白,黑5種顏色的球若干個(gè),以此從口袋

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論