C語言函數(shù)筆記方法教程,C語言函數(shù)筆記

C語言筆記(五)----struct,enum,typedef等

成員表列由若干個(gè)成員組成,每個(gè)成員都是該結(jié)構(gòu)的一個(gè)組成部分。

為普安等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及普安網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站建設(shè)、普安網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

對(duì)每個(gè)成員也必須做類型聲明。

其形式為:

類型聲明符 成員名;

例如:

注意, 最后括號(hào)外面的;分號(hào)是不可少的 。

結(jié)構(gòu)定義之后,才可以進(jìn)行變量聲明。

凡聲明為結(jié)構(gòu) stu 的變量都由上述4個(gè)成員組成。

由此可見,結(jié)構(gòu)是一種復(fù)雜的數(shù)據(jù)類型,是數(shù)目固定,類型不同的若干有序變量的集合。

聲明結(jié)構(gòu)變量 有以下三種方法。

使用上面定義的stu為例:

如:

也可以用宏定義使一個(gè)符號(hào)常量來表示一個(gè)結(jié)構(gòu)類型。例如:

例如:

這種形式的聲明的一般形式為:

例如:

這種聲明的一般形式為:

第三種方法與第二種方法的區(qū)別在于第三種方法中省去了結(jié)構(gòu)名,而直接給出結(jié)構(gòu)變量。

在程序中使用結(jié)構(gòu)變量時(shí),往往不把她作為一個(gè)整體來使用。

在ANSI C中除了允許有相同類型的結(jié)構(gòu)變量相互賦值以外,一般對(duì)結(jié)構(gòu)變量的使用,包括 賦值、輸入、輸出、運(yùn)算 等都是通過結(jié)構(gòu)變量的成員來實(shí)現(xiàn)的。

表示結(jié)構(gòu)變量成員的一般形式為:

結(jié)構(gòu)變量名.成員名

例如: boy1.num boy2.sex

如果成員本身又是一個(gè)結(jié)構(gòu),則必須逐級(jí)找到最低級(jí)的成員才能使用。如: boy1.birthday.month

結(jié)構(gòu)變量的賦值就是給各成員賦值。

數(shù)組的元素也可以是結(jié)構(gòu)類型的。

因此可以構(gòu)成結(jié)構(gòu)型數(shù)組。

初始化賦值:

當(dāng)然也可以在定義 stu結(jié)構(gòu) 時(shí)同時(shí)聲明 pstu。

賦值是把結(jié)構(gòu)變量的首地址賦予該指針變量,不能把結(jié)構(gòu)名賦予該指針變量。

如果 boy 是被聲明為 stu類型 的結(jié)構(gòu)變量。

則:

有了結(jié)構(gòu)指針變量,就能更方便地訪問結(jié)構(gòu)變量的各個(gè)成員。

其訪問的一般形式為:

(*結(jié)構(gòu)指針變量).成員名

結(jié)構(gòu)指針變量-成員名

例如: (*pstu).num 或 pstu-num

例如:

介紹數(shù)組的時(shí)候,曾介紹過數(shù)組的長(zhǎng)度是預(yù)先定義好的,在整個(gè)程序中固定不變。

C語言中不允許動(dòng)態(tài)數(shù)組類型。

例如:

但是又有此需求,為了解決這個(gè)問題,C語言提供了一些內(nèi)存管理函數(shù),這些內(nèi)存管理函數(shù)可以按需要?jiǎng)討B(tài)地分配內(nèi)存空間,也可把不再使用的空間回收待用,為有效地利用內(nèi)存資源提供了手段。

常用的內(nèi)存管理函數(shù)有3個(gè):

例子:分配一塊區(qū)域,輸入一個(gè)學(xué)生數(shù)據(jù)

上面的例子采用了動(dòng)態(tài)分配的辦法為一個(gè)結(jié)構(gòu)分配內(nèi)存空間。

每一次分配一塊空間可用來存放一個(gè)學(xué)生的數(shù)據(jù),我們可稱之為一個(gè)節(jié)點(diǎn)。

有多少個(gè)學(xué)生就應(yīng)該申請(qǐng)分配多少塊內(nèi)存空間,也就是說要建立多少個(gè)節(jié)點(diǎn)。

當(dāng)然用結(jié)構(gòu)數(shù)組也可以完成上述工作,但如果預(yù)先不能準(zhǔn)確把握學(xué)生人數(shù),也就無法確定數(shù)組大小。

而且當(dāng)學(xué)生留級(jí)、退學(xué)之后也不能把該元素占用的空間從數(shù)組中釋放出來。

用動(dòng)態(tài)存儲(chǔ)的方法可以很好地解決這些問題。

有一個(gè)學(xué)生就分配一個(gè)節(jié)點(diǎn),無須預(yù)先確定學(xué)生的準(zhǔn)確人數(shù),某學(xué)生退學(xué),可刪去該節(jié)點(diǎn),并釋放該節(jié)點(diǎn)占用的存儲(chǔ)空間,從而節(jié)約了寶貴的內(nèi)存資源。

另一方面,用數(shù)組的方法必須占用一塊連續(xù)的內(nèi)存區(qū)域。

而使用動(dòng)態(tài)分配時(shí),每個(gè)節(jié)點(diǎn)之間可以是不連續(xù)的(節(jié)點(diǎn)內(nèi)是連續(xù)的)。

節(jié)點(diǎn)之間的關(guān)系可以用指針實(shí)現(xiàn)。

即在節(jié)點(diǎn)結(jié)構(gòu)中定義一個(gè)成員項(xiàng)來存放下一節(jié)點(diǎn)的首地址,這個(gè)用于存放地址的成員,常把他稱為指針域。

可在第一個(gè)節(jié)點(diǎn)的指針域內(nèi) 存入第二個(gè)節(jié)點(diǎn)的首地址,在第二個(gè)節(jié)點(diǎn)的指針域內(nèi) 又存入第三個(gè)節(jié)點(diǎn)的首地址,如此串聯(lián)下去直到最后一個(gè)節(jié)點(diǎn)。

最后一個(gè)節(jié)點(diǎn)因無后續(xù)節(jié)點(diǎn)連接,其指針域可賦值 0

這種連接方式,在數(shù)據(jù)結(jié)構(gòu)中稱為“鏈表”。

鏈表的基本操作主要有以下幾種:

例子:建立一個(gè)三個(gè)節(jié)點(diǎn)的鏈表,存放學(xué)生數(shù)據(jù)。為簡(jiǎn)單起見,我們假定學(xué)生數(shù)據(jù)結(jié)構(gòu)中只有學(xué)號(hào)和年齡兩項(xiàng)。可編寫一個(gè)建立鏈表的函數(shù)create。程序如下:

create函數(shù) 用于建立一個(gè)有 n個(gè)節(jié)點(diǎn) 的鏈表,他是一個(gè)指針函數(shù),他返回的指針指向 stu結(jié)構(gòu)。

在create函數(shù)內(nèi)定義了三個(gè) stu結(jié)構(gòu) 的指針變量。

head為頭指針,pf為指向兩相鄰節(jié)點(diǎn)的前一節(jié)點(diǎn)的指針變量。

pb為后一節(jié)點(diǎn)的指針變量。

枚舉是一種 基本數(shù)據(jù)類型 ,而不是一種 構(gòu)造類型 ,因?yàn)樗荒茉俜纸鉃槿魏位绢愋汀?/p>

enum 枚舉名{ 枚舉值表 };

例如: enum weekday { sun,mou,tue,wed,thu,fri,sat };

enum weeakday a,b,c;

或者為:

enum weekday { sun,mou,tue,wed,thu,fri,sat }a,b,c;

或者為:

enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;

例子:

說明:

只能把枚舉值賦予枚舉變量,不能把元素的數(shù)值直接賦予枚舉變量。如:

a=sun;b=mon; 是正確的

a=0;b=1; 是錯(cuò)誤的。

如果一定要把數(shù)值賦予枚舉變量,則必須使用強(qiáng)制類型轉(zhuǎn)換。

如: a=(enum weekday)2;

還應(yīng)該說明的是枚舉元素不是字符常量也不是字符串常量,使用時(shí)不要加單、雙引號(hào)。

例子:

typedef定義的一般形式為:

typedef 原類型名 新類型名

其中原類型名中含有定義部分,新類型名一般用大寫表示,一般用大寫表示,以便于區(qū)別。

有時(shí)也可用 宏定義 來代替 typedef 功能,但是 宏定義 是由 預(yù)處理 完成的,而 typedef 則是 在編譯時(shí) 完成的,后者更為靈活方便。

使用 typedef 定義數(shù)組、指針、結(jié)構(gòu)等類型將帶來很大的方便,不僅使書寫簡(jiǎn)單而且使意義更加明確,因而增強(qiáng)了可讀性。

例如:

又如:

c語言中怎么調(diào)用函數(shù)?謝謝

C語言中,函數(shù)調(diào)用的一般形式為:

函數(shù)名(實(shí)際參數(shù)表)

對(duì)無參函數(shù)調(diào)用時(shí)則無實(shí)際參數(shù)表。實(shí)際參數(shù)表中的參數(shù)可以是常數(shù)、變量或其它構(gòu)造類型數(shù)據(jù)及表達(dá)式。各實(shí)參之間用逗號(hào)分隔。

#includestdio.h

int?fun(int?x,?int?y);?//?函數(shù)聲明,如果函數(shù)寫在被調(diào)用處之前,可以不用聲明

void?main()

{

int?a=1,?b=2,?c;

c?=?fun(a,?b);?//?函數(shù)的調(diào)用,調(diào)用自定義函數(shù)fun,其中a,b為實(shí)際參數(shù),傳遞給被調(diào)用函數(shù)的輸入值

}

//?自定義函數(shù)fun

int?fun(int?x,?int?y)??//?函數(shù)首部

{??//?{}中的語言為函數(shù)體

return?xy???x?:?y;??//?返回x和y中較大的一個(gè)數(shù)

}

擴(kuò)展資料

C語言中不允許作嵌套的函數(shù)定義。因此各函數(shù)之間是平行的,不存在上一級(jí)函數(shù)和下一級(jí)函數(shù)的問題。但是C語言允許在一個(gè)函數(shù)的定義中出現(xiàn)對(duì)另一個(gè)函數(shù)的調(diào)用。

這樣就出現(xiàn)了函數(shù)的嵌套調(diào)用。即在被調(diào)函數(shù)中又調(diào)用其它函數(shù)。這與其它語言的子程序嵌套的情形是類似的。其關(guān)系可表示如圖。

圖表示了兩層嵌套的情形。其執(zhí)行過程是:執(zhí)行main函數(shù)中調(diào)用a函數(shù)的語句時(shí),即轉(zhuǎn)去執(zhí)行a函數(shù),在a函數(shù)中調(diào)用b 函數(shù)時(shí),又轉(zhuǎn)去執(zhí)行b函數(shù),b函數(shù)執(zhí)行完畢返回a函數(shù)的斷點(diǎn)繼續(xù)執(zhí)行,a函數(shù)執(zhí)行完畢返回main函數(shù)的斷點(diǎn)繼續(xù)執(zhí)行。

參考資料:函數(shù)調(diào)用_百度百科

C語言中怎樣調(diào)用函數(shù)(舉個(gè)例子)

C語言中調(diào)用函數(shù)的方法及步驟:

工具/原料:C語言

1、首先需要輸入想要調(diào)用的函數(shù)。

2、然后當(dāng)輸入一個(gè)括號(hào)后,即可觀察他的參數(shù)。

3、接著在對(duì)應(yīng)的參數(shù)中輸入?yún)?shù)值。

4、然后,系統(tǒng)會(huì)發(fā)生一個(gè)警告。

5、接著需要調(diào)用它相應(yīng)的頭文件。

6、最后再次編譯,發(fā)現(xiàn)沒有任何警告和錯(cuò)誤即可。

如何寫C語言函數(shù)?

1、打開C-Free,按ctrl+N創(chuàng)建一個(gè)新的文件。

2、然后開始調(diào)用函數(shù)。

3、按F9進(jìn)行調(diào)試后發(fā)現(xiàn)沒有錯(cuò)誤。

4、按F5執(zhí)行程序。

5、輸入想要輸入的數(shù)字。

6、按ENTER鍵輸出結(jié)果,檢驗(yàn)符合結(jié)果,說明函數(shù)調(diào)用成功。

c語言的函數(shù)名怎樣記

函數(shù)名的記憶應(yīng)靠理解,不應(yīng)該死記硬背。

在C語言中,需要使用的函數(shù)有多種,將他們分類,實(shí)際上,已經(jīng)進(jìn)行分類了,查看一下頭文件即可。如

stdio.h --- standard input/output 標(biāo)準(zhǔn)輸入輸出頭文件

string.h -- string 字符串

math.h -- 數(shù)學(xué)

conio.h -- console input/output 控制臺(tái)頭文件 等等 。

再如:

c語言中用到的輸入輸出函數(shù)

基本【scanf , printf】

控制臺(tái)基本【 cscanf , cprintf】

字符串基本【 sscanf , sprintf 】

文件基本【 fscanf , fprintf 】 等等

單個(gè)字符操作: 【putc,getc】 【putchar,getchar】 【fputc,fgetc】 等等

字符串函數(shù): strlen -- string length ; strcpy --- string copy ;

自己仔細(xì)分析就可舉一反三。

學(xué)c語言如何做筆記

我自學(xué)C語言的時(shí)候的筆記只記程序,然后在程序旁邊寫下程序中新學(xué)的知識(shí),比如

剛學(xué)的時(shí)候

#include stdio.h

main()

{

printf("Hello!");

}

每個(gè)C程序的基本格式是:

#include stdio.h

main()

{

printf("Hello!");

}

后來學(xué)到

#include stdio.h

main()

{

int x;-----要用的變量,先聲明,

x=1;

printf("x=%d",x);----^.....

}

如此類推了,這樣不了解就可以運(yùn)行程序式式,我自己感覺還不錯(cuò),就是有時(shí)候,要寫太多了.

本文標(biāo)題:C語言函數(shù)筆記方法教程,C語言函數(shù)筆記
新聞來源:http://muchs.cn/article48/hcgjhp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、動(dòng)態(tài)網(wǎng)站、網(wǎng)站營銷、云服務(wù)器、企業(yè)網(wǎng)站制作定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)