真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言函數(shù)學(xué)習(xí) c語言函數(shù)運(yùn)用

C語言常用的函數(shù)有哪些

C語言庫函數(shù),常用庫函數(shù)有:

成都創(chuàng)新互聯(lián)公司長期為上1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為錫林浩特企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站制作,錫林浩特網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

1、scanf格式輸入函數(shù)

2、printf格式輸出函數(shù)

3、systemdos命令函數(shù)

4、sort排序

5、main主函數(shù)

6、fgets文件讀取字符串函數(shù)

7、fputs文件寫入字符串函數(shù)

8、fscanf文件格式讀取函數(shù)

9、fprintf文件格式寫入函數(shù)

10、fopen打開文件函數(shù)

11、getchar輸入字符函數(shù)

12、putchar輸出字符函數(shù)

13、malloc動(dòng)態(tài)申請內(nèi)存函數(shù)

14、free釋放內(nèi)存函數(shù)

15、abs求絕對值數(shù)學(xué)函數(shù)

16、sqrt求平方根數(shù)學(xué)函數(shù)

擴(kuò)展資料

語言組成:

1、數(shù)據(jù)類型

C的數(shù)據(jù)類型包括:整型、字符型、實(shí)型或浮點(diǎn)型(單精度和雙精度)、枚舉類型、數(shù)組類型、結(jié)構(gòu)體類型、共用體類型、指針類型和空類型。

2、常量與變量

常量其值不可改變,符號常量名通常用大寫。

變量是以某標(biāo)識符為名字,其值可以改變的量。標(biāo)識符是以字母或下劃線開頭的一串由字母、數(shù)字或下劃線構(gòu)成的序列,請注意第一個(gè)字符必須為字母或下劃線,否則為不合法的變量名。變量在編譯時(shí)為其分配相應(yīng)存儲(chǔ)單元。

3、數(shù)組

如果一個(gè)變量名后面跟著一個(gè)有數(shù)字的中括號,這個(gè)聲明就是數(shù)組聲明。字符串也是一種數(shù)組。它們以ASCII的NULL作為數(shù)組的結(jié)束。要特別注意的是,方括內(nèi)的索引值是從0算起的。

4、指針

如果一個(gè)變量聲明時(shí)在前面使用 * 號,表明這是個(gè)指針型變量。換句話說,該變量存儲(chǔ)一個(gè)地址,而 *(此處特指單目運(yùn)算符 * ,下同。C語言中另有 雙目運(yùn)算符 *) 則是取內(nèi)容操作符,意思是取這個(gè)內(nèi)存地址里存儲(chǔ)的內(nèi)容。指針是 C 語言區(qū)別于其他同時(shí)代高級語言的主要特征之一。

參考資料來源:百度百科-函數(shù)

學(xué)習(xí)C語言需要掌握哪些基本知識?

1.入門程序

#include stdio.h

int main()

{

printf("Hello World!");

return 0;

}

2.數(shù)據(jù)類型

數(shù)據(jù)類型:

1.基本數(shù)據(jù)類型:

1.1. 整型:int 4個(gè)字節(jié)

1.2. 字符型:char 1個(gè)字節(jié)

1.3. 實(shí)型(浮點(diǎn)型)

1.3.1.單精度型:float 4個(gè)字節(jié)

1.3.2.雙精度型:double 8個(gè)字節(jié)

2.構(gòu)造類型:

2.1.枚舉類型

2.2.數(shù)組類型

2.3.結(jié)構(gòu)體類型

2.4.共用體類型

3.指針類型:

4.空類型:

3.格式化輸出語句

%d:十進(jìn)制整數(shù);

%c:單個(gè)字符;

%s:字符串;

%f:6位小數(shù);

#include stdio.h

int main()

{

int age = 18;

float height = 1.85;

char unit = 'm';

printf("小明今年%d歲\n", age);

printf("小明身高%f%c\n", height, unit);

printf("小明現(xiàn)在在慕課網(wǎng)上學(xué)習(xí)IT技術(shù)\n");

return 0;

}

學(xué)好C++才是入職大廠的敲門磚! 當(dāng)年要是有這課,我的C++也不至于這樣

已失效

4.常量

值不發(fā)生改變的量成為常量;

定義字符常量(注意后面沒有;)

#include stdio.h

#define POCKETMONEY 10 //定義常量及常量值

int main()

{

printf("小明今天又得到%d元零花錢\n", POCKETMONEY);

return 0;

}

5.運(yùn)算符

5.1.算數(shù)運(yùn)算符:+,-,*,/,%,++,--;前++/--,先運(yùn)算,再取值.后++/--,先取值,再運(yùn)算;

5.2.賦值運(yùn)算符:

5.3.關(guān)系運(yùn)算符;

5.4.邏輯運(yùn)算符;

5.5.三目運(yùn)算符:

表達(dá)式1 ? 表達(dá)式2 : 表達(dá)式3;

6.水仙花數(shù)計(jì)算

輸出所有三位數(shù)的水仙花數(shù)字

所謂“水仙花數(shù)”是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù),如:153就是一個(gè)水仙花數(shù),153=111+555+333。

#include stdio.h

int main()

{

//定義三位數(shù)num,個(gè)位數(shù)sd,十位數(shù)td,百位數(shù)hd

int num, sd, td, hd;

//循環(huán)所有三位數(shù)

for( num=100 ; num1000 ; num++ )

{

//獲取三位數(shù)字num百位上的數(shù)字

hd = num/100 ;

//獲取三位數(shù)字num十位上的數(shù)字

td = num/10%10 ;

//獲取三位數(shù)字num個(gè)位上的數(shù)字

sd = num%10 ;

//水仙花數(shù)的條件是什么?

if(num ==hd*hd*hd+td*td*td+sd*sd*sd )

{

printf("水仙花數(shù)字:%d\n", num);

}

}

return 0;

}

7.打印正三角形的*

#include stdio.h

int main()

{

int i, j, k;

for(i=1; i5; i++)

{

/* 觀察每行的空格數(shù)量,補(bǔ)全循環(huán)條件 */

for( j=i ; j5 ; j++ )

{

printf(" "); //輸出空格

}

/* 觀察每行*號的數(shù)量,補(bǔ)全循環(huán)條件 */

for( k=0 ; k2*i-1 ; k++ )

{

printf("*"); //每行輸出的*號

}

printf("\n"); //每次循環(huán)換行

}

return 0;

}

8.臭名遠(yuǎn)揚(yáng)的goto語句

很少使用

#include stdio.h

int main()

{

int sum = 0;

int i;

for(i=1; i=10; i++)

{

printf("%d\n", i);

if(i==3){

goto LOOP;//滿足條件就執(zhí)行g(shù)oto語句

}

}

//執(zhí)行g(shù)oto

LOOP:printf("結(jié)束for循環(huán)了...."); //請選擇合適位置添加標(biāo)識符

return 0;

}

9.形參與實(shí)參

形參:形參是在定義函數(shù)名和函數(shù)體的時(shí)候使用的參數(shù),目的是用來接收調(diào)用該函數(shù)時(shí)傳入的參數(shù);

實(shí)參:實(shí)參是在調(diào)用時(shí)傳遞該函數(shù)的參數(shù)。

函數(shù)的形參和實(shí)參具有以下特點(diǎn):

形參只有在被調(diào)用時(shí)才分配內(nèi)存單元,在調(diào)用結(jié)束時(shí),即刻釋放所分配的內(nèi)存單元。因此,形參只有在函數(shù)內(nèi)部有效。函數(shù)調(diào)用結(jié)束返回主調(diào)函數(shù)后則不能再使用該形參變量。

實(shí)參可以是常量、變量、表達(dá)式、函數(shù)等,無論實(shí)參是何種類型的量,在進(jìn)行函數(shù)調(diào)用時(shí),它們都必須具有確定的值,以便把這些值傳送給形參。因此應(yīng)預(yù)先用賦值等辦法使實(shí)參獲得確定值。

在參數(shù)傳遞時(shí),實(shí)參和形參在數(shù)量上,類型上,順序上應(yīng)嚴(yán)格一致,否則會(huì)發(fā)生類型不匹配”的錯(cuò)誤。

10.函數(shù)返回值注意

注意:void函數(shù)中可以有執(zhí)行代碼塊,但是不能有返回值,另void函數(shù)中如果有return語句,該語句只能起到結(jié)束函數(shù)運(yùn)行的功能。其格式為:return;

11.遞歸

#include stdio.h

int getPeachNumber(int n) //這里要定義n,要不編譯器會(huì)報(bào)錯(cuò)!

{

int num;

if(n==10)

{

return 1;

}

else

{

num = (getPeachNumber(n+1)+1)*2;

printf("第%d天所剩桃子%d個(gè)\n", n, num);

}

return num;

}

int main()

{

int num = getPeachNumber(1);

printf("猴子第一天摘了:%d個(gè)桃子。\n", num);

return 0;

}

12.變量存儲(chǔ)類別 !

12.1.生存周期劃分存儲(chǔ)方式

C語言根據(jù)變量的生存周期來劃分,可以分為靜態(tài)存儲(chǔ)方式和動(dòng)態(tài)存儲(chǔ)方式。

靜態(tài)存儲(chǔ)方式:是指在程序運(yùn)行期間分配固定的存儲(chǔ)空間的方式。靜態(tài)存儲(chǔ)區(qū)中存放了在整個(gè)程序執(zhí)行過程中都存在的變量,如全局變量。

動(dòng)態(tài)存儲(chǔ)方式:是指在程序運(yùn)行期間根據(jù)需要進(jìn)行動(dòng)態(tài)的分配存儲(chǔ)空間的方式。動(dòng)態(tài)存儲(chǔ)區(qū)中存放的變量是根據(jù)程序運(yùn)行的需要而建立和釋放的,通常包括:函數(shù)形式參數(shù);自動(dòng)變量;函數(shù)調(diào)用時(shí)的現(xiàn)場保護(hù)和返回地址等。

12.2.存儲(chǔ)類型劃分

C語言中存儲(chǔ)類別又分為四類:自動(dòng)(auto)、靜態(tài)(static)、寄存器的(register)和外部的(extern) ;

用關(guān)鍵字auto定義的變量為自動(dòng)變量,auto可以省略,auto不寫則隱含定為“自動(dòng)存儲(chǔ)類別”,屬于動(dòng)態(tài)存儲(chǔ)方式。

用static修飾的為靜態(tài)變量,如果定義在函數(shù)內(nèi)部的,稱之為靜態(tài)局部變量;如果定義在函數(shù)外部,稱之為靜態(tài)外部變量。

注意:靜態(tài)局部變量屬于靜態(tài)存儲(chǔ)類別,在靜態(tài)存儲(chǔ)區(qū)內(nèi)分配存儲(chǔ)單元,在程序整個(gè)運(yùn)行期間都不釋放;靜態(tài)局部變量在編譯時(shí)賦初值,即只賦初值一次;如果在定義局部變量時(shí)不賦初值的話,則對靜態(tài)局部變量來說,編譯時(shí)自動(dòng)賦初值0(對數(shù)值型變量)或空字符(對字符變量)

為了提高效率,C語言允許將局部變量的值放在CPU中的寄存器中,這種變量叫“寄存器變量”,用關(guān)鍵字register作聲明。

注意:只有局部自動(dòng)變量和形式參數(shù)可以作為寄存器變量;一個(gè)計(jì)算機(jī)系統(tǒng)中的寄存器數(shù)目有限,不能定義任意多個(gè)寄存器變量;局部靜態(tài)變量不能定義為寄存器變量。

用extern聲明的的變量是外部變量,外部變量的意義是某函數(shù)可以調(diào)用在該函數(shù)之后定義的變量。

#includ stdio.h

//來源公眾號:C語言與CPP編程

int main()

{

//定義外部局部變量

extern int x;

return 0;

}

int x=100;

13.內(nèi)部函數(shù)外部函數(shù) !

在C語言中不能被其他源文件調(diào)用的函數(shù)稱為內(nèi)部函數(shù) ,內(nèi)部函數(shù)由static關(guān)鍵字來定義,因此又被稱為靜態(tài)函數(shù),形式為:

static [數(shù)據(jù)類型] 函數(shù)名([參數(shù)])

這里的static是對函數(shù)的作用范圍的一個(gè)限定,限定該函數(shù)只能在其所處的源文件中使用,因此在不同文件中出現(xiàn)相同的函數(shù)名稱的內(nèi)部函數(shù)是沒有問題的。

在C語言中能被其他源文件調(diào)用的函數(shù)稱為外部函數(shù) ,外部函數(shù)由extern關(guān)鍵字來定義,形式為:

extern [數(shù)據(jù)類型] 函數(shù)名([參數(shù)])

C語言規(guī)定,在沒有指定函數(shù)的作用范圍時(shí),系統(tǒng)會(huì)默認(rèn)認(rèn)為是外部函數(shù),因此當(dāng)需要定義外部函數(shù)時(shí)extern也可以省略。 extern可以省略; 14.數(shù)組 數(shù)組:一塊連續(xù)的,大小固定并且里面的數(shù)據(jù)類型一致的內(nèi)存空間, 數(shù)組的聲明:數(shù)據(jù)類型 數(shù)組名稱[長度n]

數(shù)據(jù)類型 數(shù)組名稱[長度n] = {元素1,元素2,元素3,......};

數(shù)據(jù)類型 數(shù)組名稱[] = {元素1,元素2,元素3,......};

數(shù)類類型 數(shù)組名稱[長度n]; 數(shù)組名稱[0] = 元素1;數(shù)組名稱[1] = 元素2;...... 注意: 1、數(shù)組的下標(biāo)均以0開始; 2、數(shù)組在初始化的時(shí)候,數(shù)組內(nèi)元素的個(gè)數(shù)不能大于聲明的數(shù)組長度; 3、如果采用第一種初始化方式,元素個(gè)數(shù)小于數(shù)組的長度時(shí),多余的數(shù)組元素初始化為0; 4、在聲明數(shù)組后沒有進(jìn)行初始化的時(shí)候,靜態(tài)(static)和外部(extern)類型的數(shù)組元素初始化元素為0,自動(dòng)(auto)類型的數(shù)組的元素初始化值不確定。

15.數(shù)組遍歷

#include stdio.h

int main()

{

int arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

int i;

for(i=0;i10;i++)

{

printf("%d\n",arr[i]);

}

return 0;

}

數(shù)組的冒泡排序

冒泡排序的思想:相鄰元素兩兩比較,將較大的數(shù)字放在后面,直到將所有數(shù)字全部排序。

字符串與數(shù)組

在C語言中,是沒有辦法直接定義子字符串?dāng)?shù)據(jù)類型的,需使用數(shù)組來定義所要的字符串,形式如下:

char 字符串名稱[長度] = "字符串內(nèi)容";

char 字符串名稱[長度] = {'字符串1','字符串2',....,'字符串n','\0'};

注:

[]中的長度可以省略不寫;

采用第二種方式最后一個(gè)元素必須是'\0',表示結(jié)束;

第二種方式不能寫中文!; 輸出字符串時(shí),要使用:printf("%s",字符數(shù)組名);或puts(字符數(shù)組名);

16.字符串函數(shù)

strlen(s):獲取字符串s的長度;

strcmp(s1,s2):比較字符串;比較的時(shí)候會(huì)把字符串轉(zhuǎn)換成ASCII碼再進(jìn)行比較,返回結(jié)果為0表示s1和s2的ASCII碼值相等,返回結(jié)果為1表示s1比s2的ASCII碼大,返回結(jié)果為-1表示s1比s2的ACSII碼小;

strcpy(s1,s2):字符串拷貝;s2會(huì)取代s1中的內(nèi)容;

strcat(s1,s2)將s2拼接到s1后面;注意:s1的length要足夠才可以!

atoi(s1)將字符串轉(zhuǎn)為整數(shù)!

17.多維數(shù)組

數(shù)據(jù)類型 數(shù)組名稱[常量表達(dá)式1]...[常量表達(dá)式n];

多維數(shù)組的初始化與一維數(shù)組的初始化類似也是分兩種:

數(shù)據(jù)類型 數(shù)組名稱[常量表達(dá)式1][常量表達(dá)式2]...[常量表達(dá)式n] = {{值1,..,值n},{值1,..,值n},...,{值1,..,值n}};

數(shù)據(jù)類型 數(shù)組名稱[常量表達(dá)式1][常量表達(dá)式2]...[常量表達(dá)式n]; 數(shù)組名稱[下標(biāo)1][下標(biāo)2]...[下標(biāo)n] = 值;

多維數(shù)組初始化要注意以下事項(xiàng):

采用第一種始化時(shí)數(shù)組聲明必須指定列的維數(shù)。因?yàn)橄到y(tǒng)會(huì)根據(jù)數(shù)組中元素的總個(gè)數(shù)來分配空間,當(dāng)知道元素總個(gè)數(shù)以及列的維數(shù)后,會(huì)直接計(jì)算出行的維數(shù);

采用第二種初始化時(shí)數(shù)組聲明必須同時(shí)指定行和列的維數(shù)。

18.多維度數(shù)組的遍歷

使用嵌套循環(huán)

注意:多維數(shù)組的每一維下標(biāo)均不能越界!

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

C 數(shù)組允許定義可存儲(chǔ)相同類型數(shù)據(jù)項(xiàng)的變量,結(jié)構(gòu)是 C 編程中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許您存儲(chǔ)不同類型的數(shù)據(jù)項(xiàng)。

結(jié)構(gòu)用于表示一條記錄,假設(shè)您想要跟蹤圖書館中書本的動(dòng)態(tài),您可能需要跟蹤每本書的下列屬性:

Title

Author

Subject

Book ID

定義結(jié)構(gòu)

為了定義結(jié)構(gòu),您必須使用 struct 語句。struct 語句定義了一個(gè)包含多個(gè)成員的新的數(shù)據(jù)類型,struct 語句的格式如下:

struct tag {

member-list

member-list

member-list ?

...

} variable-list ;

tag 是結(jié)構(gòu)體標(biāo)簽。

member-list 是標(biāo)準(zhǔn)的變量定義,比如 int i; 或者 float f,或者其他有效的變量定義。

variable-list 結(jié)構(gòu)變量,定義在結(jié)構(gòu)的末尾,最后一個(gè)分號之前,您可以指定一個(gè)或多個(gè)結(jié)構(gòu)變量。下面是聲明 Book 結(jié)構(gòu)的方式:

struct Books

{

char ?title[50];

char ?author[50];

char ?subject[100];

int ? book_id;

} book;

在一般情況下,tag、member-list、variable-list 這 3 部分至少要出現(xiàn) 2 個(gè)。以下為實(shí)例:

//此聲明聲明了擁有3個(gè)成員的結(jié)構(gòu)體,分別為整型的a,字符型的b和雙精度的c

//同時(shí)又聲明了結(jié)構(gòu)體變量s1

//這個(gè)結(jié)構(gòu)體并沒有標(biāo)明其標(biāo)簽

struct

{

int a;

char b;

double c;

} s1;

//此聲明聲明了擁有3個(gè)成員的結(jié)構(gòu)體,分別為整型的a,字符型的b和雙精度的c

//結(jié)構(gòu)體的標(biāo)簽被命名為SIMPLE,沒有聲明變量

struct SIMPLE

{

int a;

char b;

double c;

};

//用SIMPLE標(biāo)簽的結(jié)構(gòu)體,另外聲明了變量t1、t2、t3

struct SIMPLE t1, t2[20], *t3;

//也可以用typedef創(chuàng)建新類型

typedef struct

{

int a;

char b;

double c;

} Simple2;

//現(xiàn)在可以用Simple2作為類型聲明新的結(jié)構(gòu)體變量

Simple2 u1, u2[20], *u3;

訪問結(jié)構(gòu)成員

為了訪問結(jié)構(gòu)的成員,我們使用成員訪問運(yùn)算符(.)。成員訪問運(yùn)算符是結(jié)構(gòu)變量名稱和我們要訪問的結(jié)構(gòu)成員之間的一個(gè)句號。您可以使用 struct 關(guān)鍵字來定義結(jié)構(gòu)類型的變量。下面的實(shí)例演示了結(jié)構(gòu)的用法:

#include stdio.h

#include string.h

//來源公眾號:C語言與CPP編程

struct Books

{

char ?title[50];

char ?author[50];

char ?subject[100];

int ? book_id;

};

int main( )

{

struct Books Book1; ? ? ? ?/* 聲明 Book1,類型為 Books */

struct Books Book2; ? ? ? ?/* 聲明 Book2,類型為 Books */

/* Book1 詳述 */

strcpy( Book1.title, "C Programming");

strcpy( Book1.author, "Nuha Ali");

strcpy( Book1.subject, "C Programming Tutorial");

Book1.book_id = 6495407;

/* Book2 詳述 */

strcpy( Book2.title, "Telecom Billing");

strcpy( Book2.author, "Zara Ali");

strcpy( Book2.subject, "Telecom Billing Tutorial");

Book2.book_id = 6495700;

/* 輸出 Book1 信息 */

printf( "Book 1 title : %s\n", Book1.title);

printf( "Book 1 author : %s\n", Book1.author);

printf( "Book 1 subject : %s\n", Book1.subject);

printf( "Book 1 book_id : %d\n", Book1.book_id);

/* 輸出 Book2 信息 */

printf( "Book 2 title : %s\n", Book2.title);

printf( "Book 2 author : %s\n", Book2.author);

printf( "Book 2 subject : %s\n", Book2.subject);

printf( "Book 2 book_id : %d\n", Book2.book_id);

return 0;

}

學(xué)好C++才是入職大廠的敲門磚! 當(dāng)年要是有這課,我的C++也不至于這樣

已失效

20.共用體

共用體是一種特殊的數(shù)據(jù)類型,允許您在相同的內(nèi)存位置存儲(chǔ)不同的數(shù)據(jù)類型。您可以定義一個(gè)帶有多成員的共用體,但是任何時(shí)候只能有一個(gè)成員帶有值。共用體提供了一種使用相同的內(nèi)存位置的有效方式。

#include stdio.h

#include string.h

union Data

{

int i;

float f;

char ?str[20];

};

int main( )

{

union Data data; ? ? ? ?

printf( "Memory size occupied by data : %d\n", sizeof(data));

return 0;

}

21.指針

#include stdio.h

int main ()

{

int ?var = 20; ? /* 實(shí)際變量的聲明 */

int ?*ip; ? ? ? ?/* 指針變量的聲明 */

ip = var; ?/* 在指針變量中存儲(chǔ) var 的地址 */

printf("Address of var variable: %p\n", var ?);

/* 在指針變量中存儲(chǔ)的地址 */

printf("Address stored in ip variable: %p\n", ip );

/* 使用指針訪問值 */

printf("Value of *ip variable: %d\n", *ip );

return 0;

}

22.文件讀寫

寫入文件

#include stdio.h

int main()

{

FILE *fp = NULL;

fp = fopen("/tmp/test.txt", "w+");

fprintf(fp, "This is testing for fprintf...\n");

fputs("This is testing for fputs...\n", fp);

fclose(fp);

}

讀取文件

#include stdio.h

int main()

{

FILE *fp = NULL;

char buff[255];

fp = fopen("/tmp/test.txt", "r");

fscanf(fp, "%s", buff);

printf("1: %s\n", buff );

fgets(buff, 255, (FILE*)fp);

printf("2: %s\n", buff );

fgets(buff, 255, (FILE*)fp);

printf("3: %s\n", buff );

fclose(fp);

}

C語言與C++學(xué)習(xí)路線

23.排序算法

十大經(jīng)典排序算法(動(dòng)態(tài)演示+代碼)

24.查找算法

九種查找算法

25.面試知識

C語言與C++面試知識總結(jié)

26.字符串操作

字符串操作的全面總結(jié)

27.?C語言常用標(biāo)準(zhǔn)庫解讀

C語言常用標(biāo)準(zhǔn)庫解讀

28. C語言最常用的貪心算法

C語言最常用的貪心算法就這么被攻克了

29. 常見的C語言內(nèi)存錯(cuò)誤及對策

常見的C語言內(nèi)存錯(cuò)誤及對策

30. C語言實(shí)現(xiàn)面向?qū)ο蟮脑?/p>

C語言實(shí)現(xiàn)面向?qū)ο蟮脑?/p>

31. C語言/C++內(nèi)存管理

看完這篇你還能不懂C語言/C++內(nèi)存管理?

32. 再談C語言指針

再談指針:大佬給你撥開 C 指針的云霧

C語言函數(shù)指針之回調(diào)函數(shù)

C語言指針詳解(文末有福利)

33. C語言預(yù)處理命令

長文詳解:C語言預(yù)處理命令

34. C語言高效編程與代碼優(yōu)化

C語言高效編程與代碼優(yōu)化

35. C語言結(jié)構(gòu)體

C語言之結(jié)構(gòu)體就這樣被攻克了!值得收藏!

36. 原碼, 反碼, 補(bǔ)碼 詳解

原碼, 反碼, 補(bǔ)碼 詳解

37. C語言宏定義

簡述C語言宏定義的使用

38. c語言之共用體union、枚舉、大小端模式

c語言之共用體union、枚舉、大小端模式

如何學(xué)習(xí)C語言的庫函數(shù)?

1. 最好是先看看標(biāo)準(zhǔn)文檔,在cppreference.com這網(wǎng)站也能查看,打開文檔里面有各標(biāo)準(zhǔn)庫函數(shù)、宏的列表以及詳細(xì)介紹,C和C++的都有,如英文讀不懂的話可以選擇中文版。內(nèi)置的系列函數(shù),查找文檔就一目了然,還有非常詳盡的參數(shù)、功能、返回值等說明以及各種格式化說明符的用法。

2. 對于初學(xué)C語言底層實(shí)現(xiàn)并不需要深入了解,如想了解的話可以研究一下glibc之類的實(shí)現(xiàn)。

那么多的C語言函數(shù),怎么學(xué)啊,給個(gè)建議。

學(xué)習(xí)任何知識,循序漸進(jìn)總是最好的方式。不幸的是,很多人明知這個(gè)道理,卻總是想走所謂的捷徑。如果你是一個(gè)剛剛開始學(xué)習(xí)編程的中學(xué)生,或者你是一個(gè)剛剛進(jìn)入計(jì)算機(jī)學(xué)院的本科生,又或者你是一個(gè)決心在計(jì)算機(jī)領(lǐng)域有所建樹的初學(xué)者,你一定迫切地想知道,學(xué)習(xí)計(jì)算機(jī)技術(shù),究竟應(yīng)該從哪里下手。

我的建議是:數(shù)學(xué)、英語、C語言。

數(shù)學(xué)和英語的重要性已經(jīng)不需要我來強(qiáng)調(diào),大家也許從幼兒園就開始學(xué)習(xí)它們了,請時(shí)刻把它們放在最重要的位置,無論你是否學(xué)習(xí)計(jì)算機(jī)。

為什么C語言如此重要?我們從學(xué)習(xí)方法開始說起。書本上描述的東西,倘若不經(jīng)過我們的親自實(shí)踐,是難以被徹底消化吸收的。計(jì)算機(jī)組成原理講解了浮點(diǎn)數(shù)的格式,如果我們能看到并分析內(nèi)存或寄存器中某個(gè)浮點(diǎn)數(shù)的表示,那比單純的紙上談兵要強(qiáng)一千倍;數(shù)據(jù)結(jié)構(gòu)與算法似乎很難,如果你能把書上的例子實(shí)現(xiàn)出來,然后把習(xí)題做完,只需啃完一本好書,你也可以是算法高手;操作系統(tǒng)原理其實(shí)不僅僅是原理,只有做一些內(nèi)核方面的實(shí)驗(yàn)才能真正有深刻理解;還有許多新潮的技術(shù),比如JavaEE、PHP、Ajax、.NET等等等等,很多高手學(xué)習(xí)這些技術(shù)只需要很短的時(shí)間,不必說,他們肯定是C語言的高手。C語言幾乎是一切計(jì)算機(jī)技術(shù)的通用工具,包括計(jì)算機(jī)的各種基本理論。沒有精通C語言的決心,就不要涉足計(jì)算機(jī)領(lǐng)域。

為什么是C語言而不是C++不是Java不是其它?因?yàn)镃語言最簡單。你需要掌握一個(gè)語言工具,但也許并不需要“面向?qū)ο蟆?、“模板”、“函?shù)重載”等等一大堆概念。C語言足夠低級,非常非常地貼近計(jì)算機(jī)的底層結(jié)構(gòu),不會(huì)讓你迷失在概念的汪洋大海。除了“指針”,C語言沒有真正意義上的難點(diǎn),而“指針”,恰恰是理解計(jì)算機(jī)底層結(jié)構(gòu)精髓的關(guān)鍵所在。

不必思考應(yīng)該學(xué)什么,等把C語言精通了,你自己便會(huì)知道下一步如何去走。如果你對操作系統(tǒng)內(nèi)部感興趣,你便可以試著研究一下Unix的內(nèi)核,除了C語言,你還需要一些匯編語言和保護(hù)模式的知識;如果你對算法感興趣,那么恭喜你,C語言足夠使用了;如果你對Windows編程感興趣,去看看《Windows程序設(shè)計(jì)》吧,作者清楚的告訴你“只需要C語言的基礎(chǔ)”;如果你對任何其它語言感興趣,盡管去學(xué)吧,不過還是建議先學(xué)C++,因?yàn)槟阈枰恍懊嫦驅(qū)ο蟆钡闹R。

學(xué)習(xí)C語言不是一朝一夕的事情,但也不需要花費(fèi)十年時(shí)間才能精通。如何以最小的代價(jià)學(xué)習(xí)并精通C語言是本文的主題。請注意,即使是“最小的代價(jià)”,也絕不是什么捷徑,而是以最短的時(shí)間取得最多的收獲,同時(shí)也意味著你需要經(jīng)歷艱苦的過程。

一、要讀就讀好書,否則不如不讀

所有初學(xué)者面臨的第一個(gè)問題便是:如何選擇教材。好的開始是成功的一半,選擇一本優(yōu)秀的教材是事半功倍的關(guān)鍵因素。不幸的是,學(xué)校通常會(huì)幫你指定一本很差勁的C語言課本;而幸運(yùn)的是,你還可以再次選擇。

大名鼎鼎的譚浩強(qiáng)教授出了一本《C語言程序設(shè)計(jì)》,據(jù)說發(fā)行量有超過400萬,據(jù)我所知,很多學(xué)校都會(huì)推薦這本書作為C語言課本。雖然本人的名字(譚浩宇)跟教授僅僅一字之差,但我是無比堅(jiān)定地黑他這本書的。這本書不是寫給計(jì)算機(jī)專業(yè)的學(xué)生的,而是給那些需要考計(jì)算機(jī)等級考試的其它專業(yè)學(xué)生看的。這本書的主要缺點(diǎn)是:例子程序非常不專業(yè),不能教給你程序設(shè)計(jì)應(yīng)該掌握的思考方式;程序風(fēng)格相當(dāng)?shù)夭缓?,?huì)讓你養(yǎng)成亂寫代碼的惡習(xí);錯(cuò)誤太多,曾經(jīng)有人指出過這本書的上百個(gè)錯(cuò)誤,其中不乏關(guān)鍵的概念性錯(cuò)誤。好了,這本書我也不想說太多了,有興趣大家可以百度一下:)

Kernighan和Ritchie的《The C Programming Language》(中譯名《C程序設(shè)計(jì)語言》)堪稱經(jīng)典中的經(jīng)典,不過舊版的很多內(nèi)容都已過時(shí),和現(xiàn)在的標(biāo)準(zhǔn)C語言相去甚遠(yuǎn),大家一定要看最新的版本,否則不如不看。另外,即使是最經(jīng)典最權(quán)威的書,也沒有辦法面面俱到,所以手邊常備一本《C語言參考手冊》是十分必要的?!禖語言參考手冊》就是《C Reference Manual》,是C語言標(biāo)準(zhǔn)的詳細(xì)描述,包括絕大多數(shù)C標(biāo)準(zhǔn)庫函數(shù)的細(xì)節(jié),算得上是最好的標(biāo)準(zhǔn)C語言的工具書。順便提一句,最新的《C程序設(shè)計(jì)語言》是根據(jù)C89標(biāo)準(zhǔn)修訂的,而《C語言參考手冊》描述的是C99標(biāo)準(zhǔn),二者可能會(huì)有些出入,建議按照C99標(biāo)準(zhǔn)學(xué)習(xí)。還有一本《C和指針》,寫得也是相當(dāng)?shù)夭诲e(cuò),英文名是《Pointers on C》,特別地強(qiáng)調(diào)指針的重要性,算是本書的一個(gè)特點(diǎn)吧。不過這本書并不十分適合初學(xué)者,如果你曾經(jīng)學(xué)過C語言,有那么一些C語言的基礎(chǔ)但又不是很扎實(shí),那么你可以嘗試一下這本書。我相信,只要你理解了指針,C語言便不再神秘。

如果你已經(jīng)啃完了一本C語言教材,想要更進(jìn)一步,那么有兩本書你一定要看。首先是《C Traps and Pitfalls》(中譯名《C陷井與缺陷》),很薄的一本小冊子,內(nèi)容非常非常地有趣。要注意一點(diǎn),這本書是二十多年前寫成的,里面提到的很多C語言的缺陷都已被改進(jìn),不過能夠了解一些歷史也不是什么壞事。然后你可以挑戰(zhàn)一下《Expert C Programming》(中譯名《C專家編程》),書如其名,這本書頗具難度,一旦你仔細(xì)讀完并能透徹理解,你便可以放心大膽地在簡歷上寫“精通C語言”了。

切記一個(gè)原則,不要讀自己目前還看不懂的書,那是浪費(fèi)生命。如果你看不懂,那你一定是缺失了某些必需基礎(chǔ)知識。此時(shí),你要仔細(xì)分析自己需要補(bǔ)充哪些內(nèi)容,然后再去書店尋找講述的這些內(nèi)容的書籍。把基礎(chǔ)知識補(bǔ)充完畢再回頭來學(xué)習(xí),才會(huì)真正的事半功倍。


當(dāng)前名稱:c語言函數(shù)學(xué)習(xí) c語言函數(shù)運(yùn)用
文章地址:http://weahome.cn/article/hjojij.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部