❶ 那麼多的c語言函數,怎麼學啊,給個建議。
學習任何知識,循序漸進總是最好的方式。不幸的是,很多人明知這個道理,卻總是想走所謂的捷徑。如果你是一個剛剛開始學習編程的中學生,或者你是一個剛剛進入計算機學院的本科生,又或者你是一個決心在計算機領域有所建樹的初學者,你一定迫切地想知道,學習計算機技術,究竟應該從哪裡下手。
我的建議是:數學、英語、C語言。
數學和英語的重要性已經不需要我來強調,大家也許從幼兒園就開始學習它們了,請時刻把它們放在最重要的位置,無論你是否學習計算機。
為什麼C語言如此重要?我們從學習方法開始說起。書本上描述的東西,倘若不經過我們的親自實踐,是難以被徹底消化吸收的。計算機組成原理講解了浮點數的格式,如果我們能看到並分析內存或寄存器中某個浮點數的表示,那比單純的紙上談兵要強一千倍;數據結構與演算法似乎很難,如果你能把書上的例子實現出來,然後把習題做完,只需啃完一本好書,你也可以是演算法高手;操作系統原理其實不僅僅是原理,只有做一些內核方面的實驗才能真正有深刻理解;還有許多新潮的技術,比如JavaEE、PHP、Ajax、.NET等等等等,很多高手學習這些技術只需要很短的時間,不必說,他們肯定是C語言的高手。C語言幾乎是一切計算機技術的通用工具,包括計算機的各種基本理論。沒有精通C語言的決心,就不要涉足計算機領域。
為什麼是C語言而不是C++不是Java不是其它?因為C語言最簡單。你需要掌握一個語言工具,但也許並不需要「面向對象」、「模板」、「函數重載」等等一大堆概念。C語言足夠低級,非常非常地貼近計算機的底層結構,不會讓你迷失在概念的汪洋大海。除了「指針」,C語言沒有真正意義上的難點,而「指針」,恰恰是理解計算機底層結構精髓的關鍵所在。
不必思考應該學什麼,等把C語言精通了,你自己便會知道下一步如何去走。如果你對操作系統內部感興趣,你便可以試著研究一下Unix的內核,除了C語言,你還需要一些匯編語言和保護模式的知識;如果你對演算法感興趣,那麼恭喜你,C語言足夠使用了;如果你對Windows編程感興趣,去看看《Windows程序設計》吧,作者清楚的告訴你「只需要C語言的基礎」;如果你對任何其它語言感興趣,盡管去學吧,不過還是建議先學C++,因為你需要一些「面向對象」的知識。
學習C語言不是一朝一夕的事情,但也不需要花費十年時間才能精通。如何以最小的代價學習並精通C語言是本文的主題。請注意,即使是「最小的代價」,也絕不是什麼捷徑,而是以最短的時間取得最多的收獲,同時也意味著你需要經歷艱苦的過程。
一、要讀就讀好書,否則不如不讀
所有初學者面臨的第一個問題便是:如何選擇教材。好的開始是成功的一半,選擇一本優秀的教材是事半功倍的關鍵因素。不幸的是,學校通常會幫你指定一本很差勁的C語言課本;而幸運的是,你還可以再次選擇。
大名鼎鼎的譚浩強教授出了一本《C語言程序設計》,據說發行量有超過400萬,據我所知,很多學校都會推薦這本書作為C語言課本。雖然本人的名字(譚浩宇)跟教授僅僅一字之差,但我是無比堅定地黑他這本書的。這本書不是寫給計算機專業的學生的,而是給那些需要考計算機等級考試的其它專業學生看的。這本書的主要缺點是:例子程序非常不專業,不能教給你程序設計應該掌握的思考方式;程序風格相當地不好,會讓你養成亂寫代碼的惡習;錯誤太多,曾經有人指出過這本書的上百個錯誤,其中不乏關鍵的概念性錯誤。好了,這本書我也不想說太多了,有興趣大家可以網路一下:)
Kernighan和Ritchie的《The C Programming Language》(中譯名《C程序設計語言》)堪稱經典中的經典,不過舊版的很多內容都已過時,和現在的標准C語言相去甚遠,大家一定要看最新的版本,否則不如不看。另外,即使是最經典最權威的書,也沒有辦法面面俱到,所以手邊常備一本《C語言參考手冊》是十分必要的。《C語言參考手冊》就是《C Reference Manual》,是C語言標準的詳細描述,包括絕大多數C標准庫函數的細節,算得上是最好的標准C語言的工具書。順便提一句,最新的《C程序設計語言》是根據C89標准修訂的,而《C語言參考手冊》描述的是C99標准,二者可能會有些出入,建議按照C99標准學習。還有一本《C和指針》,寫得也是相當地不錯,英文名是《Pointers on C》,特別地強調指針的重要性,算是本書的一個特點吧。不過這本書並不十分適合初學者,如果你曾經學過C語言,有那麼一些C語言的基礎但又不是很扎實,那麼你可以嘗試一下這本書。我相信,只要你理解了指針,C語言便不再神秘。
如果你已經啃完了一本C語言教材,想要更進一步,那麼有兩本書你一定要看。首先是《C Traps and Pitfalls》(中譯名《C陷井與缺陷》),很薄的一本小冊子,內容非常非常地有趣。要注意一點,這本書是二十多年前寫成的,裡面提到的很多C語言的缺陷都已被改進,不過能夠了解一些歷史也不是什麼壞事。然後你可以挑戰一下《Expert C Programming》(中譯名《C專家編程》),書如其名,這本書頗具難度,一旦你仔細讀完並能透徹理解,你便可以放心大膽地在簡歷上寫「精通C語言」了。
切記一個原則,不要讀自己目前還看不懂的書,那是浪費生命。如果你看不懂,那你一定是缺失了某些必需基礎知識。此時,你要仔細分析自己需要補充哪些內容,然後再去書店尋找講述的這些內容的書籍。把基礎知識補充完畢再回頭來學習,才會真正的事半功倍。
❷ C語言自學——函數說明2
比如
void test( )
{
printf(「我就是無參+無返回值結合的函數!」);
}
void main ( )
{
test();
}
看上面的兩個函數,一個自定義函數test,一個主函數main,在主函數main裡面調用了test函數,調用形式就是,直接用函數名+一對括弧+分號,如test();
這種最簡單,很好理解,函數的功能都集中在test內部,調用它的函數沒有給它傳遞任何值,也沒有讓它返回任何值。
還是把上面的程序,改一下
int test( )
{
printf(「我就是無參+有返回值結合的函數!,給你返回一個值」);
return 1;
}
void main ( )
{
int back_num;
back_num=test();
printf(「返回的值是%d」,back_num);
}
現在繼續看,因為test函數呢,改成了有返回值了,那原則上你需要對調用這個test函數的返回值進行處理,比如程序中,我再定義了一個對等變數back_num用來接收人家test給你返回的值,那要是你不想再定義這個對等變數,那你必須想辦法把人家帶回來的值處理掉,不能不聞不問,比如,可以這樣,修改一下代碼,你去掉上面標黃的兩句,然後,改成這樣。
printf(「返回的值是%d」, test() );
請問,理解了嗎?
現在是否懂得了這兩種函數的定義以及被調用形式?
還不懂,那就返回去繼續研究,繼續理解?
over!please back!
還是以上面程序為准,參數部分你可以定義多個,這里我定義一個來講解
void test( int test_num )
{
printf(「讓我看看你給我傳過來是多少!」);
printf(「收到,你傳過來是%d!,對吧,但我沒給你返回值哦!」, test_num );
}
void main ( )
{
int num=10;
printf(「讓我給他傳個值!」);
test(num) ;
}
哦,理解嗎?應該很好理解,因為test設計的是需要開放一個介面參數量,所以,在()裡面定義了一個變數,如果你設計的需要開放多個介面,那你就一個一個定義,用逗號(,)隔開就行,記得必須給這些量數據類型哦。別忘了。
然後呢,main函數想要調用test,test說呢,我這里需要你提供一個參數哦,你可要准備好哦,main說,沒問題,我來定義一個對等量,給你傳過去,你說咋傳,test說,你就放我名字後面的()裡面就行,main說,好嘞,走起!看main裡面的標黃一句。
理解了嗎?
繼續
char test( int test_num )
{
printf(「讓我看看你給我傳過來是多少!」);
printf(「收到,你傳過來是%d!,對吧,我也給你一個返回值哦!」, test_num );
return 『Y』;
}
void main ( )
{
char sound;
int num=10;
printf(「讓我給他傳個值!然後我看看有啥反應,他能給我什麼結果!總不能砸下去都沒響聲吧!」);
sound=test(num) ;
printf(「返回值是 %c ,不錯,還有個響聲!好歹有來有往!」, sound );
}
好了,到這里你能全部理解嗎?不能,那就繼續返回去再看再想吧!
補充。上面四個程序中,有返回值的,我沒有定義變數,直接使用的常量值給他返回去,當然你可以根據函數功能與函數能求得的結果,通過變數來給他返回去,這都是可以的。
另外,有參數的函數,在主函數main中目前都是直接通過變數的形式(當然你也可以直接給常量,比如int num=10; test(num) ;,你可以去掉int num=10;這一句,後面的改成 test(10) ;也是可以的。這種傳遞數據的方式叫傳值調用,就是不管是變數(num)還是常量(10)其實都是具體的數據,而且量也是一個,不是多個。所以,相當於一個量只能傳遞一個值,如果有多個量,那你就必須定義多個參數。調用時,位置是一對一的。
大家先學習傳值,這個懂得了,再看傳遞地址怎麼做!一步一步來。
❸ 如何學習C語言的庫函數
1. 最好是先看看標准文檔,在cppreference.com這網站也能查看,打開文檔裡面有各標准庫函數、宏的列表以及詳細介紹,C和C++的都有,如英文讀不懂的話可以選擇中文版。內置的系列函數,查找文檔就一目瞭然,還有非常詳盡的參數、功能、返回值等說明以及各種格式化說明符的用法。
2. 對於初學C語言底層實現並不需要深入了解,如想了解的話可以研究一下glibc之類的實現。
❹ c語言函數太難了,怎麼學
莫非這點小問題就打擊到你了, 你漫漫長征第一步都還沒開始, 以後的資料庫 數據結構 操作系統 計算機網路 每一門課程都是很難的
C語言的函數其實很簡單 你就把他當成一個功能模塊就行了, 這個東西理解清楚了其實很簡單的, 比如說你想請客吃飯, 這是你的最後功能,中間你可能叫別人通知另外的人, 那麼你叫別人通知的這個過程就可以當成一個函數了, 因為你叫他幫你做一件事, 但可能不知道他是怎麼做的, 你只關注入口和出口, 即你叫他通知和他是否通知到.
既然是叫別人幫忙做事的話, 你可能需要傳一些東西給別人這就是參數, 別人做完後, 可能要返回給你一個東西, 這就是返回值, 但這不是必須的.
C語言程序全都是函數, 他就是一個函數的集合, 在main函數中調用其他的函數, 所以說C語言里全是函數, 鋤此之外再沒別的東西了
❺ 什麼是C語言函數,簡單明了讓你知道
函數是一組一起執行一個任務的語句。每個 C 程序都至少有一個函數,即主函數 main() ,所有簡單的程序都可以定義其他額外的函數。
您可以把代碼劃分到不同的函數中。如何劃分代碼到不同的函數中是由您來決定的,但在邏輯上,劃分通常是根據每個函數執行一個特定的任務來進行的。
C 標准庫提供了大量的程序可以調用的內置函數。例如,函數 strcat() 用來連接兩個字元串,函數 memcpy() 用來復制內存到另一個位置。
函數還有很多叫法,比如方法、子常式或程序,等等。
C 語言中的函數定義的一般形式如下:
在 C 語言中,函數由一個函數頭和一個函數主體組成。下面列出一個函數的所有組成部分:
以下是 max() 函數的源代碼。該函數有兩個參數 num1 和 num2,會返回這兩個數中較大的那個數:
創建 C 函數時,會定義函數做什麼,然後通過調用函數來完成已定義的任務。
當程序調用函數時,程序控制權會轉移給被調用的函數。被調用的函數執行已定義的任務,當函數的返回語句被執行時,或到達函數的結束括弧時,會把程序控制權交還給主程序。
調用函數時,傳遞所需參數,如果函數返回一個值,則可以存儲返回值。例如:
如上把 max() 函數和 main() 函數放一塊,編譯源代碼。當運行最後的可執行文件時,會產生下列結果:
形式參數就像函數內的其他局部變數,在進入函數時被創建,退出函數時被銷毀。
當調用函數時,有兩種向函數傳遞參數的方式:
默認情況下,C 使用 傳值調用 來傳遞參數。一般來說,這意味著函數內的代碼不能改變用於調用函數的實際參數。
❻ 關於C語言函數部分的基礎知識~
#include<stdio.h>
#include<math.h>
//這是聲明引用的文件,用<>括起來的一般是系統的庫,用「」一般是用戶自己的文件
//stdio是標准輸入輸出,math是數學函數庫,一般還需要用stdlib.h標准庫包含常用的操作,如system("pause");這個是用來使控制台暫停,能讓你看清結果用的,否則程序運行完一閃就沒了
int f(int h) //此處是聲明子函數,也可以使用;結束,然後再在別的地方寫實現方法
//第一個int 這是返回的值的類型,f是函數名,括弧里的int是傳入的參數類型,h是參數名,多個參數用,隔開
{int i,b,n=0,s=0;//聲明局部變數,在此處可以直接賦值
do{b=sqrt(h);//b=h的平方,sqrt是math庫里的已有的函數
for(i=2;i<=b;i++)//for(變數初始化;循環繼續的條件;每次循環後執行的操作)
if(h%i==0) break;//if(條件)條件成立的操作 此處break是指如果h除以i的余數等於0,則退出for循環
if(i>b){n++;s=s+h;}//這里if的判斷是因為上面如果沒有break,即這個數是素數,肯定最後i>b,那麼就把n增加1,然後s增加h
h--;//h是傳入的參數,遞減, 從而和n結合就是,取從傳入進來的數以下最大的十個素數
}
while(n<10); //do{循環內執行的操作} while(循環繼續的條件)
return(s);//函數f的返回值
}
main()
{int h;scanf("%d",&h);//scanf是讀取鍵盤輸入
printf("%d\n",f(h));//這個就是屏幕輸出了
}
建議拿本書看下吧,基本的什麼判斷、循環語句至少要知道,才看程序吧。
❼ C語言常用的函數有哪些
C語言庫函數,常用庫函數有:
1、scanf格式輸入函數
2、printf格式輸出函數
3、systemdos命令函數
4、sort排序
5、main主函數
6、fgets文件讀取字元串函數
7、fputs文件寫入字元串函數
8、fscanf文件格式讀取函數
9、fprintf文件格式寫入函數
10、fopen打開文件函數
11、getchar輸入字元函數
12、putchar輸出字元函數
13、malloc動態申請內存函數
14、free釋放內存函數
15、abs求絕對值數學函數
16、sqrt求平方根數學函數
(7)c語言函數學習擴展閱讀
語言組成:
1、數據類型
C的數據類型包括:整型、字元型、實型或浮點型(單精度和雙精度)、枚舉類型、數組類型、結構體類型、共用體類型、指針類型和空類型。
2、常量與變數
常量其值不可改變,符號常量名通常用大寫。
變數是以某標識符為名字,其值可以改變的量。標識符是以字母或下劃線開頭的一串由字母、數字或下劃線構成的序列,請注意第一個字元必須為字母或下劃線,否則為不合法的變數名。變數在編譯時為其分配相應存儲單元。
3、數組
如果一個變數名後面跟著一個有數字的中括弧,這個聲明就是數組聲明。字元串也是一種數組。它們以ASCII的NULL作為數組的結束。要特別注意的是,方括內的索引值是從0算起的。
4、指針
如果一個變數聲明時在前面使用 * 號,表明這是個指針型變數。換句話說,該變數存儲一個地址,而 *(此處特指單目運算符 * ,下同。C語言中另有 雙目運算符 *) 則是取內容操作符,意思是取這個內存地址里存儲的內容。指針是 C 語言區別於其他同時代高級語言的主要特徵之一。