新聞中心
C語言函數(shù)的特點及其定義?
C語言中一個函數(shù)(function)是一個可以從程序其它地方調(diào)用執(zhí)行的語句塊。
在洪江等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、成都做網(wǎng)站 網(wǎng)站設(shè)計制作按需定制設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,成都全網(wǎng)營銷,成都外貿(mào)網(wǎng)站制作,洪江網(wǎng)站建設(shè)費用合理。
1、通過使用函數(shù)(functions)我們可以把我們的程序以更模塊化的形式組織起來,從而利用C語言所支持的結(jié)構(gòu)化程序設(shè)計。
2、從數(shù)學(xué)角度,函數(shù)即集合A和集合B之間的映射關(guān)系。實際上計算機中的函數(shù)概念也是源于此,因此,一般函數(shù),都有形參和返回值。
3、從計算機組成原理的角度來看,函數(shù)即是一個小型的計算機系統(tǒng),依據(jù)馮諾伊曼的“存儲程序原理”,每一個計算機系統(tǒng)包含:輸入系統(tǒng)、輸出系統(tǒng)、運算器以及控制器,實際上對于C語言中的函數(shù)來說,它是“存儲程序原理”的軟實現(xiàn),其中形參、實參這是輸入系統(tǒng),返回值是輸出系統(tǒng),函數(shù)體中的運算符,比如+、-、*、/四則運算即為運算器,而邏輯運算符以及if、while等控制語句便是一個控制器。
(OC 初級筆記)OC 常用數(shù)學(xué)函數(shù)(C語言)
1.算數(shù)函數(shù)
1.1產(chǎn)生隨機數(shù)
rand()
1.2取絕對值
fabs()
1.3取復(fù)數(shù)的絕對值
cabs(struct complex i)
1.4浮點數(shù)的絕對值
fabs()/fabsf()/fabsl()
1.5取余
fmod(double, double)
1.6向上取整
ceil()/ceilf()/ceill()
1.7向下取整
floor()/floorf()/floorl()
1.8求最大值
fmax()/fmaxf()/fmaxl()
1.9求最小值
fmin()/fminf()/fminl()
1.10四舍五入
round()/roundf()/roundl()
2.指數(shù)與對數(shù)
2.1求 n 的 m 次方的值
pow(n, m)/powf(n, m)/powl(n, m)
2.2求 e 的 x 次方
exp(x)/expf(x)/expl(x)
2.3以 e 為底的對數(shù)值
log()/logf()/logl()
2.4以10為底的對數(shù)
log10()/log10f()/log10l()
2.5開平方(根號)
sqrt()
3.三角函數(shù)
3.1正弦值
sin()/sinf()/sinl()
3.2余弦值
cons()/cosf()/cosl()
3.3正切值
tan()/tanf()/tanl()
3.4雙曲線正弦值
sinh()/sinhf()/sinhl()
3.5雙曲線余弦值
cosh()/coshf()/coshl()
3.4雙曲線正切值
tanh()/tanhf()/tanhl()
4.反三角函數(shù)
4.1反正弦值
asin()/asinf()/asinl()
4.2反余弦值
acos()/acosf()/acosl()
4.3反正切值
atan()/atanf()/atanl()
4.4反雙曲線正弦值
asinh()/asinhf()/asinhl()
4.5反雙曲線余弦值
acosh()/acoshf()/acoshl()
4.6反雙曲線正切值
atanh()/atanhf()/atanhl()
C語言筆記(五)----struct,enum,typedef等
成員表列由若干個成員組成,每個成員都是該結(jié)構(gòu)的一個組成部分。
對每個成員也必須做類型聲明。
其形式為:
類型聲明符 成員名;
例如:
注意, 最后括號外面的;分號是不可少的 。
結(jié)構(gòu)定義之后,才可以進行變量聲明。
凡聲明為結(jié)構(gòu) stu 的變量都由上述4個成員組成。
由此可見,結(jié)構(gòu)是一種復(fù)雜的數(shù)據(jù)類型,是數(shù)目固定,類型不同的若干有序變量的集合。
聲明結(jié)構(gòu)變量 有以下三種方法。
使用上面定義的stu為例:
如:
也可以用宏定義使一個符號常量來表示一個結(jié)構(gòu)類型。例如:
例如:
這種形式的聲明的一般形式為:
例如:
這種聲明的一般形式為:
第三種方法與第二種方法的區(qū)別在于第三種方法中省去了結(jié)構(gòu)名,而直接給出結(jié)構(gòu)變量。
在程序中使用結(jié)構(gòu)變量時,往往不把她作為一個整體來使用。
在ANSI C中除了允許有相同類型的結(jié)構(gòu)變量相互賦值以外,一般對結(jié)構(gòu)變量的使用,包括 賦值、輸入、輸出、運算 等都是通過結(jié)構(gòu)變量的成員來實現(xiàn)的。
表示結(jié)構(gòu)變量成員的一般形式為:
結(jié)構(gòu)變量名.成員名
例如: boy1.num boy2.sex
如果成員本身又是一個結(jié)構(gòu),則必須逐級找到最低級的成員才能使用。如: boy1.birthday.month
結(jié)構(gòu)變量的賦值就是給各成員賦值。
數(shù)組的元素也可以是結(jié)構(gòu)類型的。
因此可以構(gòu)成結(jié)構(gòu)型數(shù)組。
初始化賦值:
當然也可以在定義 stu結(jié)構(gòu) 時同時聲明 pstu。
賦值是把結(jié)構(gòu)變量的首地址賦予該指針變量,不能把結(jié)構(gòu)名賦予該指針變量。
如果 boy 是被聲明為 stu類型 的結(jié)構(gòu)變量。
則:
有了結(jié)構(gòu)指針變量,就能更方便地訪問結(jié)構(gòu)變量的各個成員。
其訪問的一般形式為:
(*結(jié)構(gòu)指針變量).成員名
或
結(jié)構(gòu)指針變量-成員名
例如: (*pstu).num 或 pstu-num
例如:
介紹數(shù)組的時候,曾介紹過數(shù)組的長度是預(yù)先定義好的,在整個程序中固定不變。
C語言中不允許動態(tài)數(shù)組類型。
例如:
但是又有此需求,為了解決這個問題,C語言提供了一些內(nèi)存管理函數(shù),這些內(nèi)存管理函數(shù)可以按需要動態(tài)地分配內(nèi)存空間,也可把不再使用的空間回收待用,為有效地利用內(nèi)存資源提供了手段。
常用的內(nèi)存管理函數(shù)有3個:
例子:分配一塊區(qū)域,輸入一個學(xué)生數(shù)據(jù)
上面的例子采用了動態(tài)分配的辦法為一個結(jié)構(gòu)分配內(nèi)存空間。
每一次分配一塊空間可用來存放一個學(xué)生的數(shù)據(jù),我們可稱之為一個節(jié)點。
有多少個學(xué)生就應(yīng)該申請分配多少塊內(nèi)存空間,也就是說要建立多少個節(jié)點。
當然用結(jié)構(gòu)數(shù)組也可以完成上述工作,但如果預(yù)先不能準確把握學(xué)生人數(shù),也就無法確定數(shù)組大小。
而且當學(xué)生留級、退學(xué)之后也不能把該元素占用的空間從數(shù)組中釋放出來。
用動態(tài)存儲的方法可以很好地解決這些問題。
有一個學(xué)生就分配一個節(jié)點,無須預(yù)先確定學(xué)生的準確人數(shù),某學(xué)生退學(xué),可刪去該節(jié)點,并釋放該節(jié)點占用的存儲空間,從而節(jié)約了寶貴的內(nèi)存資源。
另一方面,用數(shù)組的方法必須占用一塊連續(xù)的內(nèi)存區(qū)域。
而使用動態(tài)分配時,每個節(jié)點之間可以是不連續(xù)的(節(jié)點內(nèi)是連續(xù)的)。
節(jié)點之間的關(guān)系可以用指針實現(xiàn)。
即在節(jié)點結(jié)構(gòu)中定義一個成員項來存放下一節(jié)點的首地址,這個用于存放地址的成員,常把他稱為指針域。
可在第一個節(jié)點的指針域內(nèi) 存入第二個節(jié)點的首地址,在第二個節(jié)點的指針域內(nèi) 又存入第三個節(jié)點的首地址,如此串聯(lián)下去直到最后一個節(jié)點。
最后一個節(jié)點因無后續(xù)節(jié)點連接,其指針域可賦值 0
這種連接方式,在數(shù)據(jù)結(jié)構(gòu)中稱為“鏈表”。
鏈表的基本操作主要有以下幾種:
例子:建立一個三個節(jié)點的鏈表,存放學(xué)生數(shù)據(jù)。為簡單起見,我們假定學(xué)生數(shù)據(jù)結(jié)構(gòu)中只有學(xué)號和年齡兩項。可編寫一個建立鏈表的函數(shù)create。程序如下:
create函數(shù) 用于建立一個有 n個節(jié)點 的鏈表,他是一個指針函數(shù),他返回的指針指向 stu結(jié)構(gòu)。
在create函數(shù)內(nèi)定義了三個 stu結(jié)構(gòu) 的指針變量。
head為頭指針,pf為指向兩相鄰節(jié)點的前一節(jié)點的指針變量。
pb為后一節(jié)點的指針變量。
枚舉是一種 基本數(shù)據(jù)類型 ,而不是一種 構(gòu)造類型 ,因為他不能再分解為任何基本類型。
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; 是錯誤的。
如果一定要把數(shù)值賦予枚舉變量,則必須使用強制類型轉(zhuǎn)換。
如: a=(enum weekday)2;
還應(yīng)該說明的是枚舉元素不是字符常量也不是字符串常量,使用時不要加單、雙引號。
例子:
typedef定義的一般形式為:
typedef 原類型名 新類型名
其中原類型名中含有定義部分,新類型名一般用大寫表示,一般用大寫表示,以便于區(qū)別。
有時也可用 宏定義 來代替 typedef 功能,但是 宏定義 是由 預(yù)處理 完成的,而 typedef 則是 在編譯時 完成的,后者更為靈活方便。
使用 typedef 定義數(shù)組、指針、結(jié)構(gòu)等類型將帶來很大的方便,不僅使書寫簡單而且使意義更加明確,因而增強了可讀性。
例如:
又如:
網(wǎng)站標題:c語言函數(shù)特征筆記 c語言各函數(shù)的含義
URL分享:http://www.ef60e0e.cn/article/dohehgi.html