中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
【C語(yǔ)言】C語(yǔ)言基礎(chǔ)知識(shí)概念

目錄:


一、 常量

二、 標(biāo)識(shí)符

三、 變量

四、 表達(dá)式

五、 輸入輸出函數(shù)

六、 C語(yǔ)言的語(yǔ)句

七、 C程序的基本結(jié)構(gòu)

八、 選擇結(jié)構(gòu)語(yǔ)句

if(表達(dá)式語(yǔ)句else 語(yǔ)句2

條件運(yùn)算符 表達(dá)式1? 表達(dá)式表達(dá)式3

switch語(yǔ)句

九、 循環(huán)結(jié)構(gòu)

for循環(huán)語(yǔ)句

while循環(huán)語(yǔ)句 do while循環(huán)語(yǔ)句

十、 數(shù)組

十一、 字符串函數(shù)

十二、 函數(shù)

十三、 指針

十四、 宏定義

十五、 結(jié)構(gòu)體,共用體,枚舉類型


=================================================================================================

 


一、 常量


 數(shù)字常量 

i. 普通數(shù)字1,35,2.7

ii. 指數(shù)形式2.45e-2等價(jià)于2.45*10-2 注意e大小寫(xiě)皆可,e前面的數(shù)字不能省,就算是1也不能省,后面的數(shù)字一定要是整數(shù)

iii. 長(zhǎng)整型,單精度浮點(diǎn)型3235L32.5F 分別表示3235是長(zhǎng)整型數(shù)據(jù),32.5是單精度浮點(diǎn)型左,若不寫(xiě)上L,F則表示3235是整型,32.5是雙精度浮點(diǎn)型,L,F大小寫(xiě)皆可

 字符常量

iv. 普通字符常量:用單引號(hào)把一個(gè)字符括起來(lái),如A,@

v. 轉(zhuǎn)義字符常量:一對(duì)單引號(hào)括起來(lái)并以\開(kāi)頭的字符序列,如\n(回車(chē))\123(8進(jìn)制123對(duì)應(yīng)的字符), \x23(16進(jìn)制23對(duì)應(yīng)的字符)

 字符串常量

用一對(duì)雙引號(hào)把一個(gè)字符序列括起來(lái),如“ABCef”, 系統(tǒng)存放字符串常量,每個(gè)字符分配一個(gè)字節(jié),各字符所占字節(jié)緊鄰,并且字符串末尾會(huì)給再開(kāi)一個(gè)字節(jié)里面放一個(gè)\0做為結(jié)束標(biāo)志。

 符號(hào)常量

定義格式 #define 符號(hào)常量名 符號(hào)常量值,如#define 20則定義了符號(hào)常量N,其值為20,注意符號(hào)常量名和符號(hào)常量值之間是用空格隔開(kāi),而不是寫(xiě)上=號(hào),#define和符號(hào)常量名之間也有空格的。

 題目P715,6,7,910




二、 標(biāo)識(shí)符


 命名規(guī)則

以數(shù)字,字母,下劃線這三類字符組成,但只能以字母或下劃線開(kāi)頭,而不能也數(shù)字開(kāi)頭,另外不能將關(guān)鍵字做為標(biāo)識(shí)符32個(gè)關(guān)鍵字表在P365附錄B

 變量名,函數(shù)名,符號(hào)常量名全都是標(biāo)識(shí)符

 題目:P723,4


三、 變量


 變量的定義格式

類型名 變量名;

如 int  a;定義了一個(gè)整型常量a。變量名是由人類隨便定義的,符合命名規(guī)則的前提下,愛(ài)寫(xiě)啥就寫(xiě)啥。所以什么flag,cc,y1或者函數(shù)名fun,find等全部是自定的用來(lái)做為名字而已,沒(méi)有更特別的意義。

 類型名

int 整型,long 長(zhǎng)整型: 用于存放整數(shù),只是數(shù)值范圍不同

float 單精度浮點(diǎn)型 double 雙精度浮點(diǎn)型:用于存放實(shí)數(shù),數(shù)值范圍,精度不同

char字符型:用于存放字符

 變量賦值,初始化

int  a=3;定義的同時(shí)初始化

a=6*9;定義后在程序中進(jìn)行賦值

 變量的值

只有在賦值操作時(shí)才會(huì)被改變,即將其放在等號(hào)左邊時(shí)才會(huì)改變它的值,或自增自減操作a=5,a++,a--,像a+3并未改變a的值,只是使用了a的值而已.

 自增自減運(yùn)算

變量++,++變量,變量----變量  使變量的值自增1或自減1

等價(jià)于 變量=變量+1  變量=變量-1

++,--放于變量前后效果的區(qū)別:

當(dāng)自增自減運(yùn)算做為表達(dá)式的一部分時(shí),++,--放在變量前面是先自增自減再使用變量的值,放在變量后面則是先使用變量的值,再自增自減。

x=3; printf(%d,++x);則相當(dāng)于執(zhí)行了++x; printf(%d,x);這樣的操作所以打印出4

再如x=3; printf(%d,x++);則相當(dāng)于執(zhí)行了printf(%d,x); x++;這樣的操作,則打印出3,當(dāng)然最后x的值還是4。


四、 表達(dá)式


 運(yùn)算符和運(yùn)算對(duì)象

一個(gè)運(yùn)算符都有若干個(gè)運(yùn)算對(duì)象,如 必然要跟兩個(gè)運(yùn)算對(duì)象才能進(jìn)行加法運(yùn)算:3+5。C語(yǔ)言里稱需要跟n個(gè)運(yùn)算對(duì)象的運(yùn)算符為n元運(yùn)算符。

一元運(yùn)算符有!,(類型名)

二元運(yùn)算符有+,-,*,/,%(求余), =,+=,-=,*=/=,%=,< <=, >=, =(等于), !=(不等于),&&(||()

多元運(yùn)算符有: ,

 運(yùn)算符的優(yōu)先級(jí)和結(jié)合性

i. 優(yōu)先級(jí)同一個(gè)運(yùn)算對(duì)象左右兩邊若同時(shí)有兩個(gè)運(yùn)算符,則這兩個(gè)運(yùn)算符優(yōu)先級(jí)高的先進(jìn)行運(yùn)算。

ii. 結(jié)合性若同一個(gè)運(yùn)算對(duì)象左右兩邊的兩個(gè)運(yùn)算符優(yōu)先級(jí)相同,則根據(jù)結(jié)合性判斷先進(jìn)行哪個(gè)運(yùn)算,自左自右結(jié)合性的先算左邊的運(yùn)算符,自右自左的先算右邊的運(yùn)算符。

iii. 各運(yùn)算符的優(yōu)先級(jí)和結(jié)合性見(jiàn)P365附錄C

 強(qiáng)制類型轉(zhuǎn)換

格式: (類型名表達(dá)式 將后跟的表達(dá)式的值的數(shù)據(jù)類型轉(zhuǎn)換為與圓括號(hào)內(nèi)的類型名一致的類型。注意類型名一定要用() 括起來(lái)。

 算術(shù)表達(dá)式

iv. 算術(shù)運(yùn)算符+,-,*,/,%(求余)

v. 由算術(shù)運(yùn)算符加上運(yùn)算對(duì)象構(gòu)成算術(shù)表達(dá)式,3+3*6-9/2

vi. :跟我們小學(xué)時(shí)學(xué)的一樣,就是表達(dá)式的計(jì)算結(jié)果

vii. 整數(shù)除以整數(shù)結(jié)果取整數(shù)部分,故1/3得到的值是0

viii. 5%3 結(jié)果為2,想想小學(xué)除法,求余得到的是余數(shù)不是商。

 賦值表達(dá)式

ix. 賦值運(yùn)算符=+=,-=,*=/=,%=

x. 賦值表達(dá)式:變量=表達(dá)式,如x=3+6,x+=6-9,x+=x*=3+4 注意等號(hào)左邊只能是變量

xi. 復(fù)合賦值運(yùn)算符的運(yùn)算:以/=為例:x/=表達(dá)式 等價(jià)于 x=x/(表達(dá)式)

xii. =號(hào)左邊的變量最終的值

 關(guān)系表達(dá)式

xiii. 關(guān)系運(yùn)算符<=, >=, =(等于), !=(不等于)

xiv. 由關(guān)系運(yùn)算符加上運(yùn)算對(duì)象構(gòu)成關(guān)系表達(dá)式,3>=4, 2==a

xv. :滿足相應(yīng)運(yùn)算符所指定的關(guān)系的值為1,否則為0

 邏輯表達(dá)式

xvi. 邏輯運(yùn)算符&&(||(!()

xvii. 由邏輯運(yùn)算符加上運(yùn)算對(duì)象構(gòu)成邏輯表達(dá)式,3&&4, x||!y

xviii. :滿足相應(yīng)運(yùn)算符所指定的關(guān)系的值為1,否則為0

xix. 進(jìn)行 ||或 運(yùn)算時(shí),若||左邊的表達(dá)式值為1,則不再對(duì)右邊的表達(dá)式進(jìn)行運(yùn)算。

xx. 進(jìn)行 &&且 運(yùn)算時(shí),若&&左邊的表達(dá)式值為0,則不再對(duì)右邊的表達(dá)式進(jìn)行運(yùn)算。

 逗號(hào)表達(dá)式

xxi. 逗號(hào)運(yùn)算符: ,

xxii. 用逗號(hào)將各種表達(dá)式連續(xù)起來(lái)構(gòu)成逗號(hào)表達(dá)式,如3+4,a=9,8*a

xxiii. :組成逗號(hào)表達(dá)式的各個(gè)表達(dá)式中的最后一個(gè)的值,如上例為8*a

 題目:P711~17 P818~33



五、 輸入輸出函數(shù)


 scanf(格式控制串,變量地址表列);

scanf(%d%c%d,&a,&ch,&b);    scanf(O,&x);

注意:

i. 格式控制串可控制截取用戶輸入的前幾個(gè)字符給變量,但不能控制輸入幾位小數(shù)給變量,如不能寫(xiě)成scanf(%4.2f,&x);

ii. 第二個(gè)參數(shù)給的是地址,即要么是&+變量名或數(shù)組元素名的形式,要么就是一個(gè)數(shù)組名或指針變量名,如int *p,a; p=&a; scanf(%d,p);

iii. 考試時(shí)注意看題目給你寫(xiě)好的scanf的格式

1. 若其格式控制串內(nèi)各格式符用“,”隔開(kāi)如scanf(%d%c,%d,&a,&ch,&b);那輸入時(shí)也要用逗號(hào)隔開(kāi),如此例輸入時(shí)應(yīng):3,+,5

2. 若是這種格式scanf(%d %d,&a,&b);則輸入時(shí)應(yīng):5;

3. 若是這種格式scanf(%d%c%d,&a,&ch,&b);則輸入時(shí)應(yīng)3+5,若寫(xiě)成5a=3,ch=‘ (空格),b=任意值      (自己上機(jī)運(yùn)行看看結(jié)果)

 printf(格式控制串,輸出項(xiàng)表列);

float x=7.5; printf(%8.2f,x);此處的意思是將x打印出來(lái),且占8列,保留兩位小數(shù)。自己上機(jī)運(yùn)行看看效果。

 常用格式符匯總:

iv. %d:輸入輸出整型數(shù)據(jù),%ld:輸入輸出長(zhǎng)整型數(shù)據(jù)

v. %c:輸入輸出字符型數(shù)據(jù)

vi. %f:輸出單(雙)精度浮點(diǎn)型數(shù)據(jù),輸入單精度型數(shù)據(jù)。            %lf:輸入雙精度型數(shù)據(jù)

vii. %s:輸入輸出一個(gè)字符串,用printf輸出字符串時(shí),輸出項(xiàng)書(shū)寫(xiě)時(shí)可為字符串常量,或字符數(shù)組名。如printf(%s,hello);char str[10]=helloprintf(%s,str);

viii. %u輸入輸出無(wú)符號(hào)整型,%o:輸入輸出八進(jìn)制數(shù),             

%x:輸入輸出十六進(jìn)制數(shù)

 getchar();

函數(shù)調(diào)用后返回用戶輸入的一個(gè)字符,故需再定義一個(gè)變量來(lái)存放這個(gè)字符,即使用時(shí)應(yīng) char c; c=getchar();意思就是接收用戶輸入的一個(gè)字符,并將其賦值給變量c。

 putchar(字符常量或字符變量名);

char c=Aputchar(c);putchar(A);都會(huì)向屏幕輸出字符A



六、 C語(yǔ)言的語(yǔ)句


 表達(dá)式語(yǔ)句:由表達(dá)式末尾加上分號(hào)構(gòu)成。

 函數(shù)調(diào)用語(yǔ)句:由函數(shù)調(diào)用表達(dá)式加上分號(hào)構(gòu)成。

 空語(yǔ)句: ;

 選擇結(jié)構(gòu)語(yǔ)句if語(yǔ)句 switch語(yǔ)句

 循環(huán)語(yǔ)句for語(yǔ)句 while語(yǔ)句 do while語(yǔ)句

 復(fù)合語(yǔ)句:用花括號(hào){}將以上任意語(yǔ)句括起來(lái)構(gòu)成一條復(fù)合語(yǔ)句。



七、 C程序的基本結(jié)構(gòu)


void main()

{  聲明部分:用來(lái)定義變量和聲明自定義函數(shù)的原型,需以“;”結(jié)尾,如int x;

   執(zhí)行語(yǔ)句部分:第六點(diǎn)里介紹的各種語(yǔ)句,如x=3;printf(%d,x);

}

main函數(shù)外可寫(xiě)自定義函數(shù)。如

int max()

{

   return 0;

}



八、 選擇結(jié)構(gòu)語(yǔ)句


 if(表達(dá)式語(yǔ)句else 語(yǔ)句2 

如果if語(yǔ)句的圓括號(hào)內(nèi)的表達(dá)式值為非0,則執(zhí)行語(yǔ)句1,值為0則執(zhí)行語(yǔ)句2。

i. 表達(dá)式可為任意表達(dá)式,if語(yǔ)句執(zhí)行的實(shí)質(zhì)是判斷表達(dá)式的值是否為0來(lái)決定執(zhí)行語(yǔ)句1還是語(yǔ)句2另外請(qǐng)?jiān)诖颂幈磉_(dá)嚴(yán)重關(guān)切,不管是高手還是菜鳥(niǎo)經(jīng)常會(huì)把判斷兩個(gè)數(shù)相等的符號(hào)“==”寫(xiě)成了一個(gè)等號(hào)“=”成為了賦值運(yùn)算,這樣的寫(xiě)法不會(huì)引發(fā)編譯錯(cuò)誤,但結(jié)果會(huì)與原意大大不同,所以考試前請(qǐng)?jiān)偃嵝炎约骸?/span>

ii. 語(yǔ)句1和語(yǔ)句2都只能是一個(gè)語(yǔ)句,若要跟多條語(yǔ)句,切記用一對(duì){}括起來(lái),構(gòu)成復(fù)合語(yǔ)句;也不要隨便在圓括號(hào)后加“;” ,因“ ;”構(gòu)成一條空語(yǔ)句,這會(huì)使后面跟的語(yǔ)句1不再屬于if語(yǔ)句的組成部分。

iii. if語(yǔ)句的三種結(jié)構(gòu)

1. 單邊: if(表達(dá)式語(yǔ)句

2. 雙邊if(表達(dá)式語(yǔ)句else 語(yǔ)句2

3. 多層(重點(diǎn)掌握)

if(表達(dá)式1) 語(yǔ)句

else if(表達(dá)式2) 語(yǔ)句

else if(表達(dá)式3) 語(yǔ)句3

else 語(yǔ)句n

 條件運(yùn)算符 表達(dá)式1? 表達(dá)式表達(dá)式3 

若表達(dá)式1的值非0,則取表達(dá)式2的值做為整個(gè)表達(dá)式的值,否則取表達(dá)式3的值為整個(gè)表達(dá)式的值。如 3>4? 1:2  該表達(dá)式的值為2

 switch語(yǔ)句

switch(表達(dá)式)

{

case 表達(dá)式1:語(yǔ)句

case 表達(dá)式2:語(yǔ)句

case 表達(dá)式n:語(yǔ)句

default: 語(yǔ)句

}

語(yǔ)句執(zhí)行過(guò)程:先計(jì)算表達(dá)式的值,然后判斷該值與表達(dá)式1到表達(dá)式n中的哪個(gè)相等,若與表達(dá)式i的值相等,則執(zhí)行表達(dá)式i后的所有語(yǔ)句,當(dāng)遇到break;語(yǔ)句時(shí)結(jié)束整個(gè)switch語(yǔ)句的執(zhí)行。表達(dá)式1到表達(dá)式n的值都不相等的情況下執(zhí)行default后跟的語(yǔ)句。每個(gè)case后可跟多條語(yǔ)句。


九、 循環(huán)結(jié)構(gòu)


 for循環(huán)語(yǔ)句

for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 循環(huán)體語(yǔ)句

語(yǔ)句執(zhí)行過(guò)程:

1. 計(jì)算表達(dá)式1

2. 判斷表達(dá)式2的值是否為0,若為0,語(yǔ)句執(zhí)行結(jié)束,若不為0,進(jìn)入步驟3

3. 執(zhí)行循環(huán)體語(yǔ)句(需注意的是循環(huán)體語(yǔ)句只能有一個(gè)語(yǔ)句,若要包含多個(gè)語(yǔ)句要用一對(duì){}括起來(lái),構(gòu)成一條復(fù)合語(yǔ)句,此處也不要隨便加上  ,因一個(gè)“;”可構(gòu)成一條空語(yǔ)句,這會(huì)使得后面真正的循環(huán)體語(yǔ)句不屬于for循環(huán)語(yǔ)句的部分)。進(jìn)入步驟4

4. 計(jì)算表達(dá)式3,然后重新進(jìn)入步驟2

 while循環(huán)語(yǔ)句 do while循環(huán)語(yǔ)句

i. while(表達(dá)式循環(huán)體語(yǔ)句

執(zhí)行過(guò)程:

1. 判斷表達(dá)式的值是否為非0,若是進(jìn)入步驟2,否則結(jié)束語(yǔ)句執(zhí)行。

2. 執(zhí)行循環(huán)體語(yǔ)句,重新回到步驟1

ii. do  循環(huán)體語(yǔ)句  while(表達(dá)式);

執(zhí)行過(guò)程:

1. 執(zhí)行循環(huán)體語(yǔ)句,進(jìn)入步驟2

2. 判斷表達(dá)式的值是否為非0,若是重新回到步驟1,否則結(jié)束語(yǔ)句執(zhí)行。

 

這里要注意的地方跟for語(yǔ)句一樣,即循環(huán)體語(yǔ)句只能有一個(gè)語(yǔ)句,若要包含多個(gè)語(yǔ)句要用一對(duì){}括起來(lái),構(gòu)成一條復(fù)合語(yǔ)句,此處也不要隨便加上  ,因一個(gè)“;”可構(gòu)成一條空語(yǔ)句,這會(huì)使得后面真正的循環(huán)體語(yǔ)句不屬于while循環(huán)語(yǔ)句的部分,另外do while循環(huán)的while(表達(dá)式)后是要加“;”的。

 break語(yǔ)句放在循環(huán)體內(nèi)實(shí)現(xiàn)的功能是結(jié)束其所在的那層循環(huán)的執(zhí)行。



十、 數(shù)組



 定義格式數(shù)據(jù)類型   數(shù)組名[整型常量]如 int a[10]; 定義了一個(gè)整型數(shù)組,數(shù)組名為a,這個(gè)數(shù)組含有10個(gè)元素。

 引用數(shù)組元素: 格式:數(shù)組名[下標(biāo)]   切記下標(biāo)值從0開(kāi)始。下標(biāo)可為常量,表達(dá)式,變量等,如int i=3; a[0]=5;a[3*2]=9; a[i]=7;

 初始化數(shù)據(jù)類型   數(shù)組名[整型常量]={數(shù)據(jù)表列};將數(shù)據(jù)表列的各個(gè)值依次賦值給數(shù)組的各個(gè)元素。如int a[5]={0,1,2,3,4};則數(shù)組a各元素a[0]a[4]的值分別為01,2,3,4

 遍歷數(shù)組元素

數(shù)組定義后,我們不能對(duì)數(shù)組進(jìn)行整體的操作,如int a[10];不能用a=3這樣的操作將數(shù)組的各元素都賦值為3;而只能一個(gè)一個(gè)元素的進(jìn)行賦值,如a[0]=3;a[1]=3;a[2]=3a[9]=3; 當(dāng)然此時(shí)我們就可以借助于一個(gè)for循環(huán)來(lái)控制下標(biāo)的變化從而對(duì)數(shù)組的各個(gè)元素進(jìn)行賦值

for(i=0;i<10;i++) a[i]=3; 

當(dāng)然這只是用for循環(huán)遍歷數(shù)組各元素的最簡(jiǎn)單的例子,一般考試考的是找出數(shù)組元素的某種特性的極值,比如最大值,最小值,或?qū)?shù)組各元素進(jìn)行排序,這時(shí)我們就可以使用for循環(huán)來(lái)遍歷數(shù)組的各元素,然后在當(dāng)前循環(huán)中得到一個(gè)元素再對(duì)其進(jìn)行處理。如i=2時(shí)訪問(wèn)到的元素是a[2],你就可以問(wèn)問(wèn)它,你是不是最小值啊。

 整型數(shù)組

int a[10]; 整型數(shù)組里的各個(gè)元素存放的是整數(shù)。a[3]=3;

 字符型數(shù)組

char  str[20];字符型數(shù)組里的各個(gè)元素存放的是字符。   str[3]=A;



十一、 字符串函數(shù) 



 gets(字符數(shù)組名或字符指針變量);

char str[10],* str2; str2=str;gets(str);或gets(str2);都是接收用戶輸入的字符串如“ABC”存入到字符數(shù)組str

 puts(字符數(shù)組名或字符指針變量或字符串常量);

char str[10]=china;char *str2;str=str2;  puts(str); puts(str2); 或 puts(china);都會(huì)在屏幕上打印出 china

 strlen(字符數(shù)組名或字符指針變量);字符串測(cè)長(zhǎng)函數(shù)

char str[20]=hello world! 

int len;len=strlen(str);得出的結(jié)果是len的值為12

 strcat(字符串1的地址,字符串2的地址);

將字符串2的內(nèi)容連接到字符串1的尾部。

char str1[20]=ABC,str2[20]=xyz

strcat(str1,str2); 

則程序運(yùn)行的結(jié)果是str1內(nèi)存放的字符串變?yōu)?/font>ABCxyz,當(dāng)然str2存放的字符串還是xyz。

 strcmp(字符串1的地址,字符串2的地址)

比較串1和串2哪個(gè)比較大。比較大小的依據(jù)是,兩個(gè)字符串從左往右相應(yīng)位置上第一個(gè)不相等的字符ASCII碼值之差。

char str1[20]=ABCE,str2[20]=ABDE

int i;

i=strcmp (str1,str2);

第一個(gè)不相等的字符為str1的‘C’和str2的‘D’,而二者相差-1,故-1做為strcmp函數(shù)執(zhí)行的結(jié)果返回到被調(diào)用的位置,該位置位于賦值表達(dá)式內(nèi),故將其值賦值給i,即此時(shí)i的值就是-1.

 strcpy(字符串1的地址,字符串2的地址);

將字符串2的內(nèi)容復(fù)制到字符串1內(nèi)。

char str1[20]=ABC,str2[20]=xyz;

strcpy(str1,str2);此時(shí)str1的內(nèi)容為xyz,當(dāng)然str2的內(nèi)容沒(méi)變

strcpy(str1,uvw);此時(shí)str1的內(nèi)容又變成了“uvw“。



十二、 函數(shù)



 函數(shù)定義

函數(shù)類型  函數(shù)名形式參數(shù)列表 )

 {

        內(nèi)部變量定義和聲明部分

     執(zhí)行語(yǔ)句

 }

如:

int  max (int  int  )

 int  ;

    z=  ;

    return  ;

}

注意點(diǎn):

1.函數(shù)類型是指返回值的類型,即要與return語(yǔ)句后跟的表達(dá)式的值的類型一致。若函數(shù)類型為void則說(shuō)明該函數(shù)無(wú)返回值,即函數(shù)體里不能出現(xiàn)return 語(yǔ)句。

2.形式參數(shù)列表里定義的變量要記得給它們指定類型,而且如果同時(shí)要定義多個(gè),應(yīng)在每個(gè)前面都分別指定類型名,而不能寫(xiě)成int x,y;

3.函數(shù)體里能寫(xiě)的語(yǔ)句跟main函數(shù)一樣,在開(kāi)頭可定義所需要的變量,后面跟上一堆執(zhí)行語(yǔ)句。

 函數(shù)調(diào)用流程

以上面的函數(shù)為例,在main函數(shù)進(jìn)行調(diào)用:

void main()

int a,b,c;

  scanf(%d%d,&a,&b);

  printf(%d,max(a,b));或 c=max(a,b);printf(%d,c)以上兩種方法都會(huì)在屏幕中打印出a,b間的較大值。

調(diào)用函數(shù)的格式 函數(shù)名(實(shí)際參數(shù)列表)調(diào)用的時(shí)候像什么函數(shù)類型,形式參數(shù)的類型就不要加上去了。max(a,b)中max就是函數(shù)名,寫(xiě)上變量名a,b是實(shí)際參數(shù)列表,執(zhí)行這個(gè)調(diào)用語(yǔ)句時(shí),會(huì)先把a(bǔ),b的值給相應(yīng)位置的形式參數(shù)即執(zhí)行了x=a,y=b這樣的操作,然后開(kāi)始執(zhí)行max函數(shù)的函數(shù)體的語(yǔ)句。當(dāng)max函數(shù)體里執(zhí)行到一個(gè)return語(yǔ)句時(shí),則max函數(shù)結(jié)束執(zhí)行,將return后的表達(dá)式的值返回給main函數(shù)調(diào)用max函數(shù)的那個(gè)位置,即若上面a=3,b=5則max(a,b)return后的表達(dá)式的值應(yīng)該是5也就是說(shuō)執(zhí)行完max后把5返回到調(diào)用max的位置可看成printf(%d,5);或另一種解法的c=5。

}



十三、 指針


 指針變量的聲明: 類型名 指針變量名;

 通過(guò)指針變量訪問(wèn)它所指向的普通變量的值

先將普通變量的地址賦值給指針變量,再通過(guò)指針運(yùn)算符得到普通變量的值。

int *p,x,y;

x=3;

p=&x;

printf(%d,*p);會(huì)打印出3x的值

y=*p;則y的值變?yōu)?/font>3

*p=5;則x的值變?yōu)?/font>5

 指針變量加上(減去)一個(gè)位移的效果

若指針變量存入的是數(shù)組元素的地址,則其加一減一得到的是那個(gè)數(shù)組元素下一個(gè)或前一個(gè)元素的地址。

int a[10]; p=&a[3];

*p得到的是a[3]的值。

p++;此時(shí)p存放的是a[4]的地址&a[4]; *p得到的就是a[4]的值。

p--;此時(shí)p存放的是a[2]的地址&a[2],*p得到的就是a[2]的值。

 行指針

i. 主要是對(duì)于二維數(shù)組來(lái)說(shuō)的,二維數(shù)組每行都有自己的地址,第0行地址用 數(shù)組名 表示,第i行地址為 數(shù)組名+i;而想要得到二維數(shù)組里一個(gè)元素的地址,必需先得到其所在行的地址,然后再由那個(gè)地址得到元素的地址,比如說(shuō) int  a[3][4];定義了一個(gè)二維數(shù)組,該二維數(shù)組第0行的地址為a,第1行的地址為a+1,第2行的地址為a+2,想從行的地址得到元素的地址,需在行地址前加上指針運(yùn)算符“*,即*a就是第0行首個(gè)元素的地址即a[0][0]的地址,而a[0][2]的地址就是在a[0][0]的地址基礎(chǔ)上加上位移量2,即*a+2,然后想得到a[0][2]這個(gè)元素的值呢就再加上一個(gè)指針運(yùn)算符“*”,即*(*a+2),類似地,想得到a[2][2]這個(gè)元素的值呢就是*(*(a+2)+2)

ii. 定義行指針變量: 類型名  *變量名)[數(shù)組長(zhǎng)度];

int (*p)[4],a[3][4]; p=a;此時(shí)就可把p當(dāng)成a來(lái)用,用法同上所述。

 判斷是否合法訪問(wèn)數(shù)組元素:若是指針?lè)ㄔL問(wèn),判斷指針后跟的是否地址;若是下標(biāo)法訪問(wèn),判斷下標(biāo)有無(wú)越界。

 函數(shù)指針:函數(shù)名即為函數(shù)的地址(指針)

iii. 函數(shù)指針變量的定義: 類型名 (*變量名(形參列表);如 int (*p)();

iv. 賦值:指針變量=函數(shù)名;設(shè)有個(gè)函數(shù)其函數(shù)名為max,則要將該函數(shù)的地址給p的話只要執(zhí)行如下語(yǔ)句即可 max;

 指針數(shù)組:指針數(shù)組的數(shù)組元素都是指針變量,是用來(lái)存放變量的地址的,定義格式為 類型名 變量名[數(shù)組長(zhǎng)度]; int p[10];

 指向指針的指針:指針變量也是一種變量,故在內(nèi)存中也有對(duì)應(yīng)的一個(gè)地址,而要存放指針變量的地址,就要求助于用來(lái)存放指針變量的地址的指針變量,定義格式  類型名 ** 變量名;如 int *p1; int **p2; int a=3;可進(jìn)行賦值p1=&a; p2=&p1; *p1和 **p2的值都是3.


十四、 宏定義


 無(wú)參宏定義 #define  標(biāo)識(shí)符     定義后,出現(xiàn)所定義的標(biāo)識(shí)符的地方都將以定義時(shí)指定的值來(lái)代替。

#define   2+3

main()

 int x;

   x=M*M;  x的值為2+3*2+3=11若想得到的結(jié)果是(2+3)*(2+3)則定義時(shí)也寫(xiě)成這樣 #define (2+3)

}

注意#define、標(biāo)識(shí)符、值之間都要用空格隔開(kāi),且宏定義結(jié)尾不需加分號(hào)。

 帶參宏定義  #define 標(biāo)識(shí)符(參數(shù)表 

#define  S(x,y)  x*y

main( )

 int a=3,b=4,c=5,d=6;

    printf("a*b=%d\n", S(a,b));  此時(shí)會(huì)打印出 a*b=12

    printf("a+b*c+d=%d\n" S(a+b,c+d)); 此時(shí)會(huì)打印出a+b*c+d=29,帶參宏定義執(zhí)行時(shí)是將a+b這樣一個(gè)表達(dá)式代替xc+d這樣一個(gè)表達(dá)式代替y,所以S(a+b,c+d)進(jìn)行的是a+b*c+d的運(yùn)算,而不是將a+b的值給x,c+d的值給y然后再做x*y這點(diǎn)跟函數(shù)調(diào)用傳遞參數(shù)是不一樣的。

}

 自定義類型名typedef:對(duì)已存在的類型名取一個(gè)外號(hào)。

i. 基本格式:typedef  原類型名  新類型名;

ii. typedef  int INTEGERint a,b;等價(jià)于INTEGER a,b;

iii. typedef  int  NUM[10]; 則 int a[10];等價(jià)于 NUM a; a即為一個(gè)有10個(gè)元素的數(shù)組的數(shù)組名。

iv. typedef int INTEGERint *a,*b;等價(jià)于INTEGER a,b;



十五、 結(jié)構(gòu)體,共用體,枚舉類型


 結(jié)構(gòu)體

i. 結(jié)構(gòu)體類型的定義及變量的定義

struct  結(jié)構(gòu)體名

 {類型 成員1;

  類型 成員2

  ……

  類型 成員n;

 }變量名;

struct student

 char name[10];

long num;

int score[4];

}st1;定義類型時(shí)同時(shí)定義變量

struct student st2;定義類型后,用類型名定義變量

還有一種

struct 

 char name[10];

long num;

int score[4];

}st3;不給類型名,直接定義變量

ii. 結(jié)構(gòu)體變量所占字節(jié)數(shù)各成員各占字節(jié)數(shù)之和,如以上st1,st2,st3的字節(jié)數(shù)皆為10+4+2*4=22

iii. 結(jié)構(gòu)體數(shù)組的定義及初始化

struct student a[3]={{ "zhang",20030001,89,90,91,92},

            {"liu",20030002,68,69,70,71},

            {"li",20030003,57,58,59,60} 

}

iv. 結(jié)構(gòu)體成員的訪問(wèn)

1. 結(jié)構(gòu)體變量名成員名 st1.name[2]

2. 通過(guò)指針訪問(wèn):struct student *st; st=&st1; (*st).num 或 st->num

 共用體

v. 共用體類型的定義及變量的定義

union  共用體名

類型  成員名1;

  

   類型  成員名n; 

};

變量的定義與結(jié)構(gòu)體類似,也有三種方法。

union data

{

  int i;

char ch;

float f;

}d1; 定義類型時(shí)同時(shí)定義變量

union data d2; 定義類型后,用類型名定義變量

union 

{

  int i;

char ch;

float f;

}d3; 不給類型名,直接定義變量

vi. 共用體變量所占字節(jié)數(shù)各成員所占字節(jié)數(shù)的最大值,如上d1,d2,d3所占字節(jié)數(shù)皆為4.(單精度浮點(diǎn)型變量所占字節(jié)數(shù)最多為4.

vii. 共用體成員的訪問(wèn)

1. 共用體變量名成員名 d1.f

2. 通過(guò)指針訪問(wèn):union student *d; d=&d1; (*d).num 或 d->num

 枚舉類型

viii. 枚舉類型的定義:                                                  enum 枚舉名{枚舉元素名1,枚舉元素名2,枚舉元素名n}

ix. 枚舉元素的值:
默認(rèn)值分別為0、1、n-1。枚舉元素的值也可在定義時(shí)重指定,對(duì)于沒(méi)有指定值的元素,按順序加1

enum weekday{sun=7,mon=1,tue,wend,thur,fri,sat};sun值為7,mon值為1,tue值為2,wend值為3,thur值為4,fri值為5sat值為6




本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
生活服務(wù)
熱點(diǎn)新聞
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服