關(guān)于c語(yǔ)言程序設(shè)計(jì)基礎(chǔ)知識(shí) IT知識(shí)
電腦知識(shí) 由優(yōu)爾供稿C語(yǔ)言是一門(mén)面向過(guò)程的、抽象化的通用程序設(shè)計(jì)語(yǔ)言,廣泛應(yīng)用于底層開(kāi)發(fā)。C語(yǔ)言能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器。下面是9252兒童網(wǎng)小編整理了c語(yǔ)言程序設(shè)計(jì)基礎(chǔ)知識(shí),來(lái)欣賞和學(xué)習(xí)吧,希望能對(duì)大家有所幫助。
C語(yǔ)言程序設(shè)計(jì)知識(shí)
C語(yǔ)言程序的構(gòu)成和格式
#include
Main()
{
double a,b,area;
a=1.2,b=3.6; /*將矩形的兩條邊長(zhǎng)分別賦給a和b 變量*/
area=a*b;
printf(“a=%f,b=%f,area=%f\n”,a,b,area);/*輸出矩形的兩條邊長(zhǎng)和面積*/
}
#include :每當(dāng)寫(xiě)一個(gè)程序時(shí),第一條語(yǔ)句永遠(yuǎn)是這個(gè)語(yǔ)句,因?yàn)橐粋€(gè)程序可以沒(méi)有輸入但必須要有輸出,而這個(gè)語(yǔ)句就是控制輸入輸出的。所以任何一個(gè)程序都必須由這個(gè)語(yǔ)句開(kāi)始。
main():是一個(gè)程序的主函數(shù)。一個(gè)程序是由多個(gè)函數(shù)組成的,而任何一個(gè)程序都要有一個(gè)主函數(shù),有且只有一個(gè)。任何程序都是由主函數(shù)開(kāi)始執(zhí)行的。
{}:它們兩個(gè)必須要成對(duì)出現(xiàn),它們中的語(yǔ)句是主函數(shù)體。包括定義部分和執(zhí)行部分。它們中的語(yǔ)句,每一條必須由;結(jié)束。;是C語(yǔ)句的一個(gè)組成部分而不是一個(gè)結(jié)束標(biāo)識(shí)。
/**/:注釋符一定要成對(duì)出現(xiàn),不允許嵌套。兩個(gè)符號(hào)間的語(yǔ)句不被執(zhí)行。
例年真題:
#include
main()
{
Int a;
A=5; /*給A變量賦值5
A+=3; 再賦值后再加3*/
Printf(“%d”,a);
}
(11)以下敘述中正確的是( C )。
A)C 程序的基本組成單位是語(yǔ)句 B)C 程序中的每一行只能寫(xiě)一條語(yǔ)句
二級(jí)C 語(yǔ)言程序設(shè)計(jì)試卷)
C)簡(jiǎn)單C 語(yǔ)句必須以分號(hào)結(jié)束 D)C 語(yǔ)句必須在一行內(nèi)寫(xiě)完
(11)以下敘述中正確的是( C )
A)C程序中的注釋只能出現(xiàn)在程序的開(kāi)始位置和語(yǔ)句的后面
B)C程序書(shū)寫(xiě)格式嚴(yán)格,要求一行內(nèi)只能寫(xiě)一個(gè)語(yǔ)句
C)C程序書(shū)寫(xiě)格式自由,一個(gè)語(yǔ)句可以寫(xiě)在多行上
D)用C語(yǔ)言編寫(xiě)的程序只能放在一個(gè)程序文件中
第二課:C語(yǔ)言的基礎(chǔ)知識(shí)
標(biāo)識(shí)符,常量和變量
標(biāo)識(shí)符:
定義:由字母,數(shù)字和下劃線組成,并且第一個(gè)字符必須為字母或下劃線的。這樣的組成就是標(biāo)識(shí)符。
下列合法的是:
else what #$123 34a a34 a_b a-b If
a=3 A=4
注意:在C中大寫(xiě)字母與小字字母被認(rèn)為是兩個(gè)不同的字符。
分類(lèi):
關(guān)鍵字:在C中已經(jīng)定義好了的,不能用作它用的。如if double int 等等。
預(yù)定義標(biāo)識(shí)符:如printf scanf
用戶標(biāo)識(shí)符:用戶根據(jù)自己的需求來(lái)定義的。
(12)以下選項(xiàng)中,能用作用戶標(biāo)識(shí)符的是( C )
A)void
B)8_8
C)_0_
D)unsigned
(11)以下選項(xiàng)中合法的標(biāo)識(shí)符是( C )
A) 1-1 B)1—1 C)-11 D)1—
(12)以下選項(xiàng)中不合法的標(biāo)識(shí)符是 ( C )
A)print B)FOR C)&a D)_00
常量:
定義:是指在程序的執(zhí)行的過(guò)程中,其值不會(huì)被改變的量。
分類(lèi):
整型常量:沒(méi)有小數(shù)的常量
如:3 9 1234等等都是。
實(shí)型常量:有小數(shù)點(diǎn)的常量
如:3.9 3.0 3.
字符常量:由單個(gè)字符組成的量
如:’a’ ‘b’ ‘3’
字符串常量:至少由一個(gè)字符組成的量
如:“a” “abc” “ beijing”
符號(hào)常量:符號(hào)常量的值到底是多少,這是由在來(lái)定義符號(hào)常量時(shí)來(lái)決定的
?2*pi
(13)以下選項(xiàng)中,能用作數(shù)據(jù)常量的是 ( D )
A)o115 B) 0118 C)1.5e1.5 D) 115L
(13)以下選項(xiàng)中不能作為C 語(yǔ)言合法常量的是( A )。
A)'cd' B)0.1e+6 C)'\a' D)'\011'
(13)以下選項(xiàng)中不屬于字符常量的是 ( B )
A)'C' B)'C' C)'\xCC0' D)'\072'
整型常量與實(shí)型常量
整型常量的幾個(gè)表示方法
十進(jìn)制數(shù):
八進(jìn)制數(shù):以0開(kāi)頭的數(shù)字,由0-7組成。
下列合法的八進(jìn)制數(shù)是
A,0 B,028 C,-077 D,01.0
十六進(jìn)制數(shù):以0X開(kāi)頭,由0-9和A-F組成。
A,oxff B,0xabc C,0x11 D,0x19
實(shí)型常量 123.4
小數(shù)形式:123.4
指數(shù)形式:1.234e2
1. 字母e和E之前必須要有數(shù)字
2.字母e和E之后的數(shù)字必須是整數(shù)
3.字母e’和數(shù)字之間不能有空格。
A,2.607E-1 0.8103E 2 -77.77 456E-2 0.1e+6 1.23E1.2
變量:
1.定義:在程序的運(yùn)行過(guò)程中其值可以被改變的量,就叫變量。
2.原則:變量必須先定義后使用。變量定義的過(guò)程就是給變量開(kāi)辟存儲(chǔ)單元的過(guò)程。
3.分類(lèi):
整型變量:用關(guān)鍵字int來(lái)表示.
short int 短整型
long int 長(zhǎng)整型 在內(nèi)存中占4個(gè)字節(jié) 如123L
unsigned 無(wú)符號(hào) 如有-200U這就是錯(cuò)的。
變量的定義:int a 這是定義了一個(gè)整型變量a.
實(shí)型變量:用關(guān)鍵字 double 或float來(lái)表示。
float 單精度 在內(nèi)存中占4個(gè)字節(jié)
double 雙精度 在內(nèi)存中占8個(gè)字節(jié)。
算術(shù)表達(dá)式
一、基本的算術(shù)運(yùn)算符
+ - * / % 這些是雙目運(yùn)算符(就是指操作對(duì)象有兩個(gè))
注意:
除%外,其它的運(yùn)算符的運(yùn)算對(duì)象可以是整型也可以是實(shí)型。%的操作對(duì)象只能是整型。
如10%3=1 10.7%3 10%4.5 x%3=0
+ - 也可以做為單目運(yùn)算。-5.4 +4.9
說(shuō)明:
1.如果雙目運(yùn)算符兩邊運(yùn)算數(shù)的類(lèi)型一致,則所得結(jié)果的類(lèi)型與運(yùn)算數(shù)的類(lèi)型一致。如 1.0/2.0=0.5 1/2=0
2.如果雙目運(yùn)算符兩邊運(yùn)算數(shù)的類(lèi)型不一致,則系統(tǒng)會(huì)自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換,使兩邊的類(lèi)型一致后,再進(jìn)行運(yùn)算。
1.0/2=0.5
3.所有的單精度數(shù)據(jù),在運(yùn)算過(guò)程中都以雙精度進(jìn)行運(yùn)算。
二、優(yōu)先級(jí)
() + - * / % + -
由高——————低
如 (5+1)/2=???
2.5.3強(qiáng)制類(lèi)型轉(zhuǎn)換表達(dá)式
格式:(類(lèi)型名) (表達(dá)式)
例:(int)3.234=3
(double)10%3=?
(14)表達(dá)式:4-(9)%2的值是( B )
A)0
B)3
C)4
D)5
(14)設(shè)變量已正確定義并賦值,以下正確的表達(dá)式是 ( C )
A)x=y*5=x+z
B)int(15.8%5)
C)x=y+z+5,++y
D)x=25%5.0
賦值表達(dá)式
格式:變量名=表達(dá)式
注:1.不可以顛倒(左邊必須是變量名,右邊必須是C語(yǔ)言中合法的表達(dá)式)
2.功能就是先求出右邊表達(dá)式的值,然后把此值賦值給賦值號(hào)左邊的變量。確切的說(shuō)是把數(shù)據(jù)存入以該變量為標(biāo)識(shí)的存儲(chǔ)單元中去。a=4 , a=7
3.結(jié)合性的優(yōu)先級(jí)僅高于逗號(hào)表達(dá)式。順序是自右向左的。如a=2+7/3
4.'='是一個(gè)賦值號(hào),不是一個(gè)等號(hào)。
5.x=y。變量的值也是可以傳遞和賦值的。它的意思就是將變量Y中的值賦值到X中去。同樣N=N+1也成立
6.賦值運(yùn)算符的左側(cè)只能是變量,不能是常量或表達(dá)式 a+b=c這就是違法的
7。賦值號(hào)的右邊也可以是一個(gè)賦值表達(dá)式。如a=b=7+1;
補(bǔ)充;表達(dá)式與語(yǔ)句的區(qū)別,
表達(dá)式后面加一個(gè)分號(hào)就是語(yǔ)句。
復(fù)合賦值表達(dá)式
例:
a+=3------a=a+3 同理可得a*=3 /= -=
a+=a-=a+a a 的初值是9
a+=a-=18
a+=(a=a-18)
a+=(a=-9)
a+=a
-18
(15)若有定義語(yǔ)句:int x=10;,則表達(dá)式x-=x+x的值為( B )
A)-20
B)-10
C)0
D)10
(14)設(shè)有定義:int x=2;,以下表達(dá)式中,值不為6的是 ( D )
A) x*=x+1 x=x*(x+1)
B) x++,2*x
C)x*=(1+x)
D)2*x,x+=2
(17)若變量均已正確定義并賦值,以下合法的C語(yǔ)言賦值語(yǔ)句是 (A)
A)x=y==5;
B)x=n%2.5;
C)x+n=I
D)x=5=4+1;
++和——的講解
++:自身加1
--:自身減1
如
i=3 i++_______I=i+1 i=4
單目
3++
++I I++
當(dāng)++在前,先自身加1,然后再干別人讓干的事情 。
當(dāng)++在后,先別人讓干的事情然后再干 自身加1。
int i=3;
int a;
a=i++; a=3
a=++I;a=4
C語(yǔ)言基礎(chǔ)知識(shí)
1、C程序
C語(yǔ)言程序結(jié)構(gòu)有三種: 順序結(jié)構(gòu) , 循環(huán)結(jié)構(gòu)(三個(gè)循環(huán)結(jié)構(gòu)), 選擇結(jié)構(gòu)(if 和 switch)
2、main函數(shù)
每個(gè)C語(yǔ)言程序中main 函數(shù)是有且只有一個(gè)。讀程序都要從main()入口, 然后從最上面順序往下讀(碰到循環(huán)做循環(huán),碰到選擇做選擇)。
3、存儲(chǔ)形式
計(jì)算機(jī)的數(shù)據(jù)在電腦中是以二進(jìn)制的形式保存。最低的存儲(chǔ)單元是bit(位),位是由為 0 或者1構(gòu)成。 byte 是指字節(jié), 一個(gè)字節(jié) = 八個(gè)位。數(shù)據(jù)存放的位置就是它的地址。
4、注釋
是對(duì)程序的`說(shuō)明,可出現(xiàn)在程序中任意合適的地方,注釋從“/*”開(kāi)始到最近一個(gè)“*/”結(jié)束,其間任何內(nèi)容都不會(huì)被計(jì)算機(jī)執(zhí)行,注釋不可以嵌套。
5、書(shū)寫(xiě)格式
每條語(yǔ)句的后面必須有一個(gè)分號(hào),分號(hào)是語(yǔ)句的一部分。一行內(nèi)可寫(xiě)多條語(yǔ)句,一個(gè)語(yǔ)句可寫(xiě)在多行上。
6、標(biāo)識(shí)符
合法的用戶標(biāo)識(shí)符考查:
合法的要求是由字母,數(shù)字,下劃線組成。有其它元素就錯(cuò)了。
并且第一個(gè)必須為字母或則是下劃線。第一個(gè)為數(shù)字就錯(cuò)了。
C語(yǔ)言標(biāo)識(shí)符分如下3類(lèi)
(1)關(guān)鍵字。它們?cè)诔绦蛑杏泄潭ǖ暮x,不能另作他用。如int、for、switch等。
(2)預(yù)定義標(biāo)識(shí)符。預(yù)先定義并具有特定含義的標(biāo)識(shí)符。如define、include等。
(3)用戶標(biāo)識(shí)符。用戶根據(jù)需要定義的標(biāo)識(shí)符,符合命名規(guī)則且不與關(guān)鍵字相同。
關(guān)鍵字不可以作為用戶標(biāo)識(shí)符號(hào)。main define scanf printf 都不是關(guān)鍵字。迷惑你的地方If 是可以做為用戶標(biāo)識(shí)符。因?yàn)镮f 中的第一個(gè)字母大寫(xiě)了,所以不是關(guān)鍵字。
7、實(shí)型數(shù)據(jù)
實(shí)型數(shù)據(jù)的合法形式:小數(shù)形式和指數(shù)形式。掌握判定指數(shù)形式合法性。
2.333e-1 就是合法的,且數(shù)據(jù)是2.333×10-1。
考試口訣:e 前e 后必有數(shù),e 后必為整數(shù)。
8、字符
字符數(shù)據(jù)的合法形式::
1 是字符占一個(gè)字節(jié),"1"是字符串占兩個(gè)字節(jié)(含有一個(gè)結(jié)束符號(hào))。
0 的ASCII 數(shù)值表示為48,a 的ASCII 數(shù)值是97,A的ASCII 數(shù)值是65。
字符型和整數(shù)是近親:
char a = 65 ;
printf(“%c”, a); 得到的輸出結(jié)果:a
printf(“%d”, a); 得到的輸出結(jié)果:65
一般考試表示單個(gè)字符錯(cuò)誤的形式:65 "1"
字符是可以進(jìn)行算術(shù)運(yùn)算的,記?。?0-0=48
大寫(xiě)字母和小寫(xiě)字母轉(zhuǎn)換的方法: A+32=a 相互之間一般是相差32。
9、整型數(shù)據(jù)
整型一般是兩個(gè)字節(jié), 字符型是一個(gè)字節(jié),雙精度一般是4 個(gè)字節(jié):
考試時(shí)候一般會(huì)說(shuō),在16 位編譯系統(tǒng),或者是32 位系統(tǒng)。碰到這種情況,不要去管,
一樣做題。掌握整型一般是兩個(gè)字節(jié), 字符型是一個(gè)字節(jié),雙精度一般是4 個(gè)字節(jié)就可以了。
10、轉(zhuǎn)義字符
轉(zhuǎn)義字符的考查:
在程序中 int a = 0x6d,是把一個(gè)十六進(jìn)制的數(shù)給變量a 注意這里的0x 必須存在。
在程序中 int a = 06d, 是一個(gè)八進(jìn)制的形式。
在轉(zhuǎn)義字符中, ’x6d’ 才是合法的,0 不能寫(xiě),并且x 是小寫(xiě)。
‘141’ 是合法的, 0 是不能寫(xiě)的。
‘108’是非法的,因?yàn)椴豢梢猿霈F(xiàn)8。
11、算術(shù)運(yùn)算
算術(shù)運(yùn)算符一共有+、—、*、/、%這五個(gè)。%符號(hào)兩邊要求是整數(shù)。不是整數(shù)就錯(cuò)了。
三種取整丟小數(shù)的情況:不是四舍五入是舍掉小數(shù)部分。
1、int a =1.6;
2、(int)a;
3、1/2; 3/2;
12、強(qiáng)制類(lèi)型轉(zhuǎn)換
將一個(gè)運(yùn)算對(duì)象轉(zhuǎn)換成指定類(lèi)型,格式為(類(lèi)型名)表達(dá)式
一定是 (int)a 不是 int(a),注意類(lèi)型上一定有括號(hào)的。
注意(int)(a+b) 和(int)a+b 的區(qū)別。前是把a(bǔ)+b 轉(zhuǎn)型,后是把a(bǔ) 轉(zhuǎn)型再加b。
13、賦值
是表達(dá)式就一定有數(shù)值。
賦值表達(dá)式:表達(dá)式數(shù)值是最左邊的數(shù)值,a=b=5;該表達(dá)式為5,常量不可以賦值。
復(fù)合賦值運(yùn)算符:注意:a*=m+2 是 a=a*(m+2)
自加、自減表達(dá)式:假設(shè)a=5,++a(表達(dá)式的值為6), a++(表達(dá)式的值為5);
j=a++;等價(jià)于j=a;a=a+1; 而j=++a;等價(jià)于a=a+1;j=a;。
考試口訣:++在前先加后用,++在后先用后加。
14、逗號(hào)運(yùn)算
逗號(hào)表達(dá)式:優(yōu)先級(jí)別最低; 表達(dá)式的數(shù)值逗號(hào)最右邊的那個(gè)表達(dá)式的數(shù)值。
(2,3,4)的表達(dá)式的數(shù)值就是4。
15、數(shù)制轉(zhuǎn)換
一定要記住二進(jìn)制 如何轉(zhuǎn)換成十進(jìn)制。
八進(jìn)制是沒(méi)有8 的,逢8 進(jìn)1,018 的數(shù)值是非法的。
C語(yǔ)言基礎(chǔ)知識(shí)總結(jié)
算法結(jié)構(gòu):
一、順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu);二、循環(huán)結(jié)構(gòu)又分為while型、until型、for循環(huán)結(jié)構(gòu);程序流程圖;
結(jié)構(gòu)化程序設(shè)計(jì)方法:
(1)自頂向下;(2)逐步細(xì)化;(3)模塊化設(shè)計(jì);(4)結(jié)構(gòu)化編碼。
數(shù)據(jù)類(lèi)型:
常量:常量包括字面常量、直接常量和符號(hào)常量;
變量:C語(yǔ)言規(guī)定標(biāo)志符只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須是字母或者下劃線;必須壓迫先定義后使用;每一個(gè)變量被定義以確定類(lèi)型后,在編譯時(shí)就能為其分配相應(yīng)的存儲(chǔ)單元;
整數(shù)類(lèi)型:整數(shù)常量有十進(jìn)制、八進(jìn)制和十六進(jìn)制;“%d”
整形變量:數(shù)據(jù)在內(nèi)存中存放形式是以二進(jìn)制形式存放;有int型、short int型和long int型,無(wú)符號(hào)整型變量的范圍是-32768—32767,有符號(hào)型為0~65535.通常把long定義為32位,把short定義為16位,int可以是32位也可以為16位,這都主要取決于機(jī)器字長(zhǎng)。
實(shí)型常量的表示方法:(1)十進(jìn)制,0.0;(2)指數(shù)形式,123e3
實(shí)型變量:實(shí)數(shù)型數(shù)據(jù)在內(nèi)存中的存放形式,一般在內(nèi)存中占4個(gè)字節(jié),分成整數(shù)部分和小數(shù)部分存放。實(shí)型變量分為float型、double型long double型。實(shí)型數(shù)據(jù)會(huì)存在舍入誤差。
實(shí)型常量的類(lèi)型:C編譯系統(tǒng)將實(shí)型常量作為雙精度來(lái)處理。
字符型數(shù)組:(一)字符常量:轉(zhuǎn)義字符(\n——換行,\t——tab,\r——回車(chē),\f——換頁(yè),\b——退格,\ddd——1到3位8進(jìn)制的數(shù)代表的字符)
(二)字符變量:字符數(shù)據(jù)存儲(chǔ)形式實(shí)際是以ASCII碼存儲(chǔ)。“%c”
字符串常量:雙撇號(hào)括起來(lái)的一系列字符序列。
C的運(yùn)算符有以下幾種:
1、算術(shù)運(yùn)算符(+ - * / %)結(jié)合方向自左向右
2、關(guān)系運(yùn)算符(> < =="">= <= !="">
3、邏輯運(yùn)算符(! && ||)
4、位運(yùn)算符(<>> ~ | ^ &)
5、賦值運(yùn)算符(=及符號(hào)擴(kuò)展賦值運(yùn)算符)
6、條件運(yùn)算符(? : )
7、逗號(hào)運(yùn)算符( , )
8、指針運(yùn)算符(* &)
9、求字節(jié)運(yùn)算符(sizeof)
10、強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符((類(lèi)型))
11、分量運(yùn)算符( . ->)
12、下標(biāo)運(yùn)算符([])
13、其他
控制語(yǔ)句:
完成一定的控制功能。
1、if()~else~
2、for()~
3、while()~
4、do~while()
5、continue
6、break
7、switch
8、goto
9、return
字符數(shù)據(jù)的輸入輸出:
1、putchar()輸入字符變量
2、getchar()只能接受一個(gè)字符
格式輸入輸出:
1、printf(%d—整型,%c—字符型,%ld,%md,%o,%u,%s,%-m.nf,%e,%g)
2、scanf(格式控制,地址列表)
數(shù)組
一維數(shù)組的定義:類(lèi)型說(shuō)明符 數(shù)組名【常量表達(dá)式】;先定義后引用;一維數(shù)組初始化時(shí)可以只對(duì)一部分元素初始化,在對(duì)全部數(shù)組元素初始化的時(shí)候可以部規(guī)定長(zhǎng)度;但是若被定義的數(shù)組長(zhǎng)度與提供的初始值不一樣時(shí),則數(shù)組長(zhǎng)度不能省略。
二維數(shù)組的定義:類(lèi)型說(shuō)明符 數(shù)組名【常量表達(dá)式】【常量表達(dá)式】C語(yǔ)言中存放二維數(shù)組是先存放第一行的元素,緊接著是第二行,其實(shí)也是以一維的方式存放。如果初始化時(shí)能指定所有元素的初始值,第一維大小可以省略,但是第二維不能省略。
字符數(shù)組:定義和初始化跟數(shù)組差不多,只是需要加單引號(hào)。字符和字符串結(jié)束標(biāo)志,C語(yǔ)言規(guī)定,以'\0’代表。
字符串處理函數(shù):
1、puts()將一個(gè)字符串輸出到終端
2、gets()從終端輸入一個(gè)字符串到字符數(shù)組,并且得到一個(gè)函數(shù)值。
3、strcat()鏈接兩個(gè)字符數(shù)組中的字符串。
4、strcpy()字符串復(fù)制函數(shù)。
5、strcmp()比較字符串作用。
6、strlen()測(cè)試字符串長(zhǎng)度的函數(shù)不包括“\0”
7、strlwr()將字符串中的大寫(xiě)字母轉(zhuǎn)換為小寫(xiě)字母。
8、strupr()將字符串中的小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母。
函數(shù)
(1)一個(gè)源程序由多個(gè)函數(shù)組成。
(2)C程序的執(zhí)行從main()函數(shù)開(kāi)始;
(3)所有函數(shù)都是平行的;
(4)函數(shù)分類(lèi);可以分為標(biāo)準(zhǔn)和自定義,還可以分為有參函數(shù)和無(wú)參函數(shù)。
函數(shù)定義的一般形式:
(1)類(lèi)型標(biāo)志符 函數(shù)名()
{
聲明部分
語(yǔ)句
}
(2)類(lèi)型標(biāo)志符 函數(shù)名(形式參數(shù)列表)
{
聲明部分
語(yǔ)句
}
關(guān)于形參和實(shí)參的說(shuō)明:
(1) 在定義函數(shù)中指定的形參,在未出現(xiàn)函數(shù)調(diào)用時(shí),他們并不占用內(nèi)存中的存儲(chǔ)單元,只有發(fā)生調(diào)用時(shí),才會(huì)分配內(nèi)存。
(2) 實(shí)參可以是常量、變量或者表達(dá)式;有時(shí)傳遞的時(shí)地址;
(3) 在被定義中,形參必須指定類(lèi)型;
(4) 實(shí)參與形參的類(lèi)型應(yīng)相同或賦值兼容;
(5) C語(yǔ)言規(guī)定,實(shí)參變量對(duì)形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只有實(shí)參傳遞給形參,而不能由形參傳遞給實(shí)參。
函數(shù)的返回值:
希望通過(guò)函數(shù)調(diào)用使主調(diào)函數(shù)得到一個(gè)確定的值。
(1)函數(shù)的返回值是通過(guò)函數(shù)中的return語(yǔ)句獲取的。
(2)函數(shù)值的類(lèi)型;
(3)如果函數(shù)值的類(lèi)型和return語(yǔ)句中表達(dá)式的值不一樣,則以函數(shù)類(lèi)型為準(zhǔn)。
(4)如果調(diào)用函數(shù)中沒(méi)有return語(yǔ)句,并不帶回一個(gè)確定的用戶需要的值,函數(shù)不是不帶回值,而只是不帶回有用的值,帶回一個(gè)不確定的值。
(5)如不需要帶回任何值,用void。
函數(shù)的調(diào)用:
調(diào)用方式1、函數(shù)語(yǔ)句;2、函數(shù)表達(dá)式;3、函數(shù)參數(shù)。
被調(diào)用的函數(shù)的聲明:
一個(gè)函數(shù)調(diào)用另一個(gè)函數(shù)所具備的條件:
1、首先被調(diào)用的函數(shù)必須是已經(jīng)存在的函數(shù);
2、如果使用庫(kù)函數(shù),一般應(yīng)該在本文件開(kāi)頭用#include命令將調(diào)用有關(guān)庫(kù)函數(shù)時(shí)在所需要用到的信息“包含”到本文件中。.h文件是頭文件所用的后綴。
3、如果使用用戶自己定義的函數(shù),而且該函數(shù)與使用它的函數(shù)在同一個(gè)文件中,一般還應(yīng)該在主調(diào)函數(shù)中對(duì)被調(diào)用的函數(shù)做聲明。
4、如果被調(diào)用的函數(shù)定義出現(xiàn)在主調(diào)函數(shù)之前可以不必聲明。
5、如果已在所有函數(shù)定義之前,在函數(shù)的外部已做了函數(shù)聲明,則在各個(gè)主調(diào)函數(shù)中不必多所調(diào)用的函數(shù)在做聲明。
局部變量和全局變量:
(一)局部變量在一個(gè)函數(shù)內(nèi)部定義的變量是內(nèi)部變量,它只是在本函數(shù)范圍內(nèi)的有效,主函數(shù)也不能使用其它函數(shù)中定義的變量;不同函數(shù)中可以使用相同的名字的變量,他們代表不同的對(duì)象,互不干擾;形式參數(shù)也是局部變量;在一個(gè)函數(shù)內(nèi)部,可以在復(fù)合語(yǔ)句中定義變量,這些變量只在本復(fù)合語(yǔ)句中有效,這種復(fù)合句也可以稱(chēng)為“分程序”或“程序塊”;
(二)全局變量,在函數(shù)之外定義的變量稱(chēng)為外部變量,全局變量可以增加函數(shù)間數(shù)據(jù)聯(lián)系的渠道,一般不再必要時(shí)不要使用,他在程序的全部執(zhí)行過(guò)程中占用存儲(chǔ)單元,是函數(shù)的通用性,使用全局變量會(huì)使程序的清晰性降低。還要注意若果同一源文件中,外部變量和局部變量同名,則在局部變量作用范圍內(nèi),外部變量被“屏蔽”,不起任何作用。
變量的存儲(chǔ)類(lèi)別:
(變量值存儲(chǔ)時(shí)間)動(dòng)態(tài)存儲(chǔ)方式,在程序運(yùn)行期間進(jìn)行分動(dòng)態(tài)的分配存儲(chǔ)空間的方式,靜態(tài)存儲(chǔ)方式是指在程序運(yùn)行期間分配固定的存儲(chǔ)空間的方式;存儲(chǔ)空間分為程序區(qū)、靜態(tài)存儲(chǔ)區(qū)和動(dòng)態(tài)存儲(chǔ)區(qū);全局變量全部放在靜態(tài)存儲(chǔ)區(qū)中,程序開(kāi)始時(shí)分配空間,完畢時(shí)釋放;動(dòng)態(tài)存儲(chǔ)區(qū)中存放以下數(shù)據(jù):
1、函數(shù)形式參數(shù);
2、自動(dòng)變量;
3、函數(shù)調(diào)用時(shí)的現(xiàn)場(chǎng)保護(hù)和返回地址;在C語(yǔ)言中每個(gè)變量和函數(shù)都有兩個(gè)屬性,是數(shù)據(jù)類(lèi)型和數(shù)據(jù)存儲(chǔ)類(lèi)型,存儲(chǔ)類(lèi)別是數(shù)據(jù)在內(nèi)存中存儲(chǔ)的方式。
存儲(chǔ)方式分為靜態(tài)和動(dòng)態(tài)存儲(chǔ)類(lèi),具體包含有四種:自動(dòng)的(auto),靜態(tài)的(static),寄存器的(register),外部的(extern),如果不加以聲明,就自認(rèn)為是auto型就會(huì)自動(dòng)分配存儲(chǔ)空間屬于動(dòng)態(tài)存儲(chǔ)方式。
Static聲明局部變量是在函數(shù)調(diào)用結(jié)束后不消失而保留原值,即占用存儲(chǔ)單元不釋放,在下一次調(diào)用該函數(shù)時(shí),該變量已有值,就是上次函數(shù)調(diào)用結(jié)束時(shí)的值。其中需要說(shuō)明的是在定義局部變量不賦初值的話,則靜態(tài)局部變量編譯時(shí)自動(dòng)賦值為0或者空字符,雖然靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后仍然存在,但是其他函數(shù)不能引用它的。靜態(tài)局部變量主要用在當(dāng)初始化后,變量只是被引用而不改變其值。
Register變量是C語(yǔ)言中允許將局部變量的值放在CPU中的寄存器中需要時(shí)直接從寄存器中取出來(lái)參加運(yùn)算,不必再到內(nèi)存中提取,但是計(jì)算機(jī)系統(tǒng)中寄存器數(shù)量有限,不能任意定義任意多的存儲(chǔ)器,局部靜態(tài)變量不能定義為寄存器變量。
Extern聲明外部變量,用以擴(kuò)展外部變量的作用域。在一個(gè)文件中,如果定義之前的函數(shù)想引用該外部變量,則應(yīng)該在引用之前用關(guān)鍵字extern對(duì)該變量做外部變量聲明。在多文件中,也可以采用extern聲明的辦法進(jìn)行外部變量聲明。有時(shí)希望某些局部變量只限于被本文件引用,而不能被其他文件引用,這時(shí)就可以采用在定義外部變量時(shí)外加一個(gè)static,這在程序模塊化設(shè)計(jì)中加強(qiáng)了通用性。
Static來(lái)聲明一個(gè)變量的作用有二個(gè),一個(gè)是在聲明對(duì)局部變量時(shí)。則為該變量分配的空間在整個(gè)程序執(zhí)行期間始終存在;一個(gè)是在對(duì)全局變量聲明中,該變量的作用域僅限于本文件模塊操作。
注意:這些方法同樣適用于函數(shù)的聲明