當前位置:首頁 » 編程語言 » c語言基本學習

c語言基本學習

發布時間: 2022-11-30 07:52:16

A. c語言的學習方法

如果剛開始接觸c語言,聽不懂也正常,不要有畏懼的心理,有些小夥伴可能看到部分同學什麼都會,自己就很氣餒,因為這部分同學很可能接觸編程比較早,即使小孩學走路也有一個過程,剛開始有走路慾望->學會站立,腿部有力量->嘗試走路,不斷練習->學會走路。所以不要慌。

學C語言與走路一樣,剛開始一定要有學習的慾望,然後,再制定計劃,不斷練習,量變會引起質變,堅持下去就發現原來這么簡單。

歡迎關注公眾號:c語言與cpp編程

1、學習資料

書本推薦:《cprimerplus》難得的好書。老譚的書可看可不看,但是這本藍皮的cprimerplus是我案頭必備的參考書,後面還有完整的c99標准庫,所以適合當個參考書。注意區分一下《c++primer》和《cprimerplus》

如果覺得這幾本書還是有點難,那就先看《C語言程序設計》

有了經驗後要去看看,例子很經典。後來進階可以看看三劍客《c和指針》《c陷阱與缺陷》《c專家編程》

剛學C語言的話可以結合看下C語言編程經典100例;

編譯器:VS,DevC++,VC++,CodeBlocks,C-Free,TurboC。關於它們的特點網上介紹很多了,就不贅述了。講真,入門和基礎階段你用哪個無所謂,還是選自己喜歡的,不過對於初學者我們推薦DevC++。可能現在大學課堂用的還是VC++,剛入門自己習慣就行。

視頻推薦:有同學曾經說過,視頻這么好,上課就不用聽講了,這個是完全錯誤的,視頻是課堂補充,上課還是一定要好好聽講的,視頻可以查缺補漏,系統的學習一下。

上面提到的一些資料整理好了,可以下載:

鏈接:

提取碼:1234

學習方法:

1、過:學習一門新的語言,第一步就是把它所涉及的基礎知識大體過一點,不求深解,只求了解——第一遍:無需了解太過深入的理論,大體知道這門語言是什麼樣的,主要面向哪些場合,一些基本的語法格式是什麼樣的就可以了。

2、抄代碼:剛開始寫代碼,沒有多少人一上來就能立刻自己寫一個很完善很強大的代碼,甚至連基本的語法都會寫錯,這時候抄代碼就很關鍵了,從書上抄,從例子里抄,邊抄邊想,邊想邊回憶語法。

3、模仿改:自己會抄寫一些簡單的代碼,熟悉了一遍此語言的簡單語法後,但還不太清楚怎樣下手寫一個完整的代碼模塊,所以這一步要仿寫了,仿照給出的代碼寫一個屬於自己的代碼

4、勤調試:沒有人能一下子寫出完全正確的代碼,自己試著寫一些代碼,通過不斷調試來驗證自己的一些想法,繼續思考,再次驗證,來回折騰。熟悉一些基本的調試工具以及調試方法。

5、看n遍:出錯或遇到問題時,將代碼從頭看到尾,看了一遍又一遍,直到快全部記住時,總能找出問題原因,相信方法總會比問題多

6、練重復2-5步三遍以上,不解釋。

7、創新拿出一個完全沒有寫過的代碼,根據要求,一步步的寫出來。如果寫不出來,或者中間一堆錯誤,請參考第六步。

8、悟:主動找到寫代碼的感覺和成就感,並保持下去,世界上最難的語言就掌握了,將成為你軟體生涯永遠的工具。

B. 學習C語言要些什麼基礎

C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

由於C語言簡單易學,已經成為學習編程的入門語言之一。在大學一年級,已經安排C語言相關的學習課程。由此可見,C語言的學習並不需要前置課程,可以輕松入門。附件是一本適合初學者入門學習的C語言書籍。其中包括:基本數據類型,運算符與表達式,控制流,函數,指針,數據結構,輸入輸出等基本基本知識的介紹。能夠熟練運用上述的C語言規則,就可以完成C語言入門學習的內容。

一般要掌握基本的微機原理的知識、英文閱讀的能力。學習語言注意要多動手,多思考調試,還要能堅持不懈,最重要的還有興趣。

只要同學們掌握一些方法,多讀,多寫,克服心理上畏難情緒,C語言是完全可以學好的並且靈活應用的。

至於看什麼書,推薦幾本:
1.C語言入門經典
《C語言入門經典》例子簡單生活化,而且每個例子分析很細。章節安排合理,章末的例子還特別注重思路的引導,而且分析起來特別有成就感。
這本書是自學過程的一本好書。
2.C primer plus
這本書很適合希望系統學習C語言的讀者,正如他的名字,是一本不錯的入門和進階的書。書中的每一個知識點都有很多生動簡單的示例,並給出了相應的運行結果。總之,在看這本書的過程中,有一種一氣呵成的感覺。
3.C和指針
這本書和《專家編程》《C缺陷和陷阱》可以並稱C語言(進階書)三傑。本書的部分內容更適合有C基礎的人看。如ADT、遞歸、指針和數組的部分,書中所述的思想是國內教材所缺乏的。看完本書,能得到一個正確的C語言觀。
4.C程序設計語言
難以置信的是,這樣一本C語言的入門書籍,從hello world開始講起,卻在短小的篇幅里,手把手教你寫了stdio.h stdlib.h
string.h當中大部分常式,實現了二分查找、快速排序、二叉樹、哈希表這些重要的數據結構和演算法。這本書傳遞著一種簡單、優雅、平實和閑適。
5.C專家編程
《C專家編程》展示了最優秀的C程序員所使用的編碼技巧,並專門開辟了一章對C++的基礎知識進行了介紹。書中C的歷史、語言特性、聲明、數組、指針、鏈接、運行時、內存以及如何進一步學習C++等問題進行了細致的講解和深入的分析。

C. 學習c語言的方法

第一步、驗證性練習
在這一步要求按照教材上的程序實例進行原樣輸入,運行一下程序是否正確。在這一步基本掌握C語言編程軟體的使用方法(包括新建、打開、保存、關閉C程序,熟練地輸入、編輯C程序;初步記憶新學章節的知識點、養成良好的C語言編程風格)。
第二步、照葫蘆畫瓢
在第一步輸入的C程序的基礎上進行試驗性的修改,運行一下程序看一看程序結果發生了什麼變化,分析結果變化的原因,加深新學知識點的理解。事實上這和第一步時同步進行的,實現「輸入」加深知識的記憶,「修改」加深對知識的理解。記憶和理解是相輔相成的,相互促進。
第三步、不看教材看是否能將前兩步的程序進行正確地輸入並運行。
在這一步要求不看教材,即使程序不能運行,看能否將其改正,使其能正確運行。目的是對前兩步的記憶、理解進一步強化。
第四步、增強程序的調試能力
在《Turbo C/C++ for Windows 集成實驗與學習環境》集成的教材中每章都有C語言初學者易犯的錯誤,按照易出錯的類型,將教材中的正確的程序改成錯誤的程序,運行一下程序,看出現的錯誤信息提示,並記下錯誤信息,再將程序改成正確的,運行一下程序。這樣反復修改,就能夠學習C語言程序發生錯誤的原因和修改錯誤的能力。
第五步、研究典型的C語言程序,提高程序設計能力
經過上述過程的學習,我們已經學會了C語言各種語句的流程(即計算機是如何執行這些語句的過程),然後就可以研讀別人編寫C語言經典程序,看懂別人是如何解決問題的,學習解決問題的方法和程序設計技巧,提高自己的程序設計能力。
在軟體中有50多個典型的源程序,研究它的實現方法,提高自己的程序設計能力。
第六步、研究課程設計源成序,提高C語言程序設計能力和調試較大程序的能力。
C語言課程設計的目的:是讓學生綜合利用所學的C語言知識,解決一些接近實際問題題目,提高程序設計和調試較大程序的能力,為進一步進行軟體開發打下堅實的基礎。
學習C語言,就來北京尚學堂,優秀的師資和科學的授課方式,會帶給你最好的學習體驗。

D. 零基礎如何學習C語言

學習C語言不是一朝一夕的事情,但也不需要花費十年時間才能精通。如何以最小的代價學習並精通C語言是本文的主題。請注意,即使是「最小的代價」,也絕不是什麼捷徑,而是以最短的時間取得最多的收獲,同時也意味著你需要經歷艱苦的過程。

一、要讀就讀好書,否則不如不讀。所有初學者面臨的第一個問題便是:如何選擇教材。好的開始是成功的一半,選擇一本優秀的教材是事半功倍的關鍵因素。不幸的是,學校通常會幫你指定一本很差勁的C語言課本;而幸運的是,你還可以再次選擇。

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

二、Unix/Linux還是Windows,這是個很大的問題。不同的編程環境會造就出不同思維的程序員。Windows的程序員大多依賴集成開發環境,比如Visual Studio,而Unix程序員更加鍾愛Makefile與控制台。顯而易見,集成開發環境更容易上手,在Windows上學習C語言,只需要會按幾個基本的Visutal C++工具欄按鈕就可以開始寫Hello, World!了,而在Unix下,你需要一些控制台操作的基本知識。

建議初學者應該以Visual C++ 6.0(不是VisualC++ .NET)或者Dev C++作為主要的學習環境,而且千萬不要在IDE的使用技巧上過多糾纏,因為今後你一定要轉向Unix環境的。Visual C++ 6.0使用很方便,調試也很直觀,但其默認的編譯器對C標準的支持並不好,而Dev C++使用gcc編譯器,對C99的標准都支持良好。

E. 學c語言需要什麼基礎知識

c語言是一種通用的計算機編程語言,應用非常廣泛。C語言的設計目標是提供一種能夠以簡單的方式編譯處理低級內存,生成少量機器碼,不需要任何運行環境支持就能運行的編程語言。

因為C語言簡單易學,所以成為學習編程的入門語言之一。大學第一年已經安排了C語言相關的課程。可見,C語言的學習不需要先修課,可以輕松入門。附件是一本適合初學者學習的C語言書籍。包括:介紹基本數據類型、運算符和表達式、控制流、函數、指針、數據結構、輸入輸出等基礎知識。熟練運用上述C語言規則,即可完成C語言入門學習。

當你對C語言的入門課程有了一定的了解,就可以更深入更專門的學習數據結構,系統介面,圖形開發等。這時候推薦C Primer Plus。能夠更好的理解C語言的運行機制。

根據2016年8月TIOBE的統計結果,目前C語言佔比11.303%,排名第二。雖然和往年相比是歷史最低點,但還是很強勢的。可見,C語言在軟體開發的相關領域發揮著重要的作用。學好C語言也可以為學習其他編程語言打下基礎。

//www.ultimate-communications.com/img_f7246b600c3387445e4197e9590fd9f9d62aa09b?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto

F. c語言基礎知識必背有哪些

基礎的理論理解,基本規則:如組織形式,解釋器規定,源文件命名規則等等,還有程序的一些基本結構如:順序結構,選擇結構,循環結構的基本特性,還有就是數據類型及各種運算符的作用了。

動手實踐幫助記憶,多編寫程序,即便不會寫多學著敲敲代碼也是很有用的,記住了要點的同時,提高學習興趣,這非常重要。

C語言

是一門面向過程的、抽象化的通用程序設計語言,廣泛應用於底層開發。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著跨平台的特性,以一個標准規格寫出的C語言程序可在包括類似嵌入式處理器以及超級計算機等作業平台的許多計算機平台上進行編譯。

G. 怎麼自學C語言 入門

在開始學習C語言基礎時,要反問自己為什麼學C語言,如何學好C語言。同時要知道什麼是C語言以及C語言的發展。

當對這些知識有了一個概念之後,就正式開始學習C語言了,其中,可能會學到數據類型、運算符、表達式、數組、/函等,這些是為了對C語言的基礎有一個基礎認知,擴展,整合;還會學到指針、聯合體、結構體、枚舉、位運算、預處理、文件等知識點,學這些是為了全面掌握面向過程設計、實練邏輯演算法,拓展思維模式等過程。

學完了這些,還可能會講到VS、VC++、C++、C和TC—認識開發環境和語言的區別。

這里只給大家介紹一個大概,如果有興趣的話,可以和我私聊哦

第二階段:上機實戰訓練

學完了這些理論知識後,就得將學到的知識點全部運用到實踐中去。這樣才能更好學習入門。分享不錯裙的有軟體視頻資料分享

1、C++語言熟練,熟悉C++語法,包括面向對象的概念,模版等

這一階段需要比較艱辛的過程,需要學習很多書,包括《C++ Programming Language》,《Effective C++》,《More Effective C++》,《Thinking in C++》,《C++對象模型》,《C++ 模版》,如果上述書籍已經很熟悉了,本人認為,在學習階段,已經很不錯了。該過程可以在大學完成,需要一到兩年的時間,應為是純理論的東西,只能算熟悉。在該過程中,需要做一些簡單的程序。

2、C++做項目,使用C++做項目,需要比較多的其它庫,比如UI庫,還需要使用一些網路庫等,這個時候,就可以看到C++的博大精深了,此時,光有C++語言知識是不夠的,需要補充一些平台開發的知識,看看開源的C++項目。比如:Windows程序設計,C++網路編程,DirectX游戲開發,如果用C++做了兩個以上的項目,那以及很不錯了。

3、最高境界是精通,自然是量的積累才會有質地變化。

H. 大學c語言怎麼學

新手如何學習C語言
第一:一些概念。
C語言是一門程序設計語言,有一些標准,比較重要的是ANSI
C(好像是C89)和C99。
數據結構包括邏輯結構和物理結構。邏輯結構是數據元素集合和定義在集合上的關系。物理結構是邏輯結構在計算機中的實現。
LCC、VC、TC、GCC都是C語言編譯器,一般包括集成開發環境,編譯器和鏈接器及輔助工具
我們書寫的是C源程序,源程序通過編譯器編譯為中間文件,中間文件經鏈接器鏈接生成可執行文件。不同操作系統可執行文件不同。中間文件也有幾個標准,微軟使用的和Linux下通用的有差異。
第二:學習什麼。
個人認為程序設計學習的重點放在數據結構的學習上,但是這種學習要有一個平台,比如C語言。
學習C語言首先要掌握基本語法,常量、變數、類型、及順序結構、分支結構和循環結構的意義及用法。進一步學習構造類型如指針、結構、函數的意義和用法。
C語言提供一些標准函數以減輕程序設計工作量,這些函數我們自己也可以實現。即使不依靠函數庫,只有編譯器,理論上就足夠了。事實上,提供的標准函數效率都很高,使用很頻繁,沒有自己實現的必要,所以掌握常用函數是非常必要的,但是要注意函數的適用范圍。
繼續學習因人而異,應該可以獨立選擇了。
第三:如何學習。
強調多實踐,C語言的學習要經常上機,多寫程序才能逐步提高。
推薦書籍:C
Programming
Languge。有中譯本,但最好看英文版。
通讀,並將所有習題獨立思考,給出解答,尤其是編程實踐題,最好逐一上機完成。

I. 學習C語言要些什麼基礎

  • 簡單學習C語言的基礎:

  1. 識字,可以閱讀C語言教材。

  2. 認識英文字母,標點符合,阿拉伯數字,並可以在電腦上打出來。

J. 學習C語言需要掌握哪些基本知識

1.入門程序

#include <stdio.h>
int main()
{
printf("Hello World!");
return 0;
}

2.數據類型

數據類型:

1.基本數據類型:

1.1. 整型:int 4個位元組

1.2. 字元型:char 1個位元組

1.3. 實型(浮點型)

  • 1.3.1.單精度型:float 4個位元組

  • 1.3.2.雙精度型:double 8個位元組

  • 2.構造類型:

    2.1.枚舉類型

    2.2.數組類型

    2.3.結構體類型

    2.4.共用體類型

    3.指針類型:

    4.空類型:

    3.格式化輸出語句

  • %d:十進制整數;

  • %c:單個字元;

  • %s:字元串;

  • %f:6位小數;

  • #include <stdio.h>

  • int main()

  • {

  • int age = 18;

  • float height = 1.85;

  • char unit = 'm';

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

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

  • printf("小明現在在慕課網上學習IT技術 ");

  • return 0;

  • }

  • 學好C++才是入職大廠的敲門磚! 當年要是有這課,我的C++也不至於這樣

    已失效

    4.常量

    值不發生改變的量成為常量;

    定義字元常量(注意後面沒有;)

  • #include <stdio.h>

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

  • int main()

  • {

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

  • return 0;

  • }

  • 5.運算符

    5.1.算數運算符:+,-,*,/,%,++,--;前++/--,先運算,再取值.後++/--,先取值,再運算;

    5.2.賦值運算符:

    5.3.關系運算符;

    5.4.邏輯運算符;

    5.5.三目運算符:

  • 表達式1 ? 表達式2 : 表達式3;

  • 6.水仙花數計算

    輸出所有三位數的水仙花數字

    所謂「水仙花數」是指一個三位數,其各位數字立方和等於該數,如:153就是一個水仙花數,153=111+555+333。

  • #include <stdio.h>


  • int main()

  • {

  • //定義三位數num,個位數sd,十位數td,百位數hd

  • int num, sd, td, hd;

  • //循環所有三位數

  • for( num=100 ; num<1000 ; num++ )

  • {

  • //獲取三位數字num百位上的數字

  • hd = num/100 ;

  • //獲取三位數字num十位上的數字

  • td = num/10%10 ;

  • //獲取三位數字num個位上的數字

  • sd = num%10 ;

  • //水仙花數的條件是什麼?

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

  • {

  • printf("水仙花數字:%d ", num);

  • }

  • }

  • return 0;

  • }

  • 7.列印正三角形的*

  • #include <stdio.h>

  • int main()

  • {

  • int i, j, k;

  • for(i=1; i<5; i++)

  • {

  • /* 觀察每行的空格數量,補全循環條件 */

  • for( j=i ; j<5 ; j++ )

  • {

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

  • }

  • /* 觀察每行*號的數量,補全循環條件 */

  • for( k=0 ; k<2*i-1 ; k++ )

  • {

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

  • }

  • printf(" "); //每次循環換行

  • }

  • return 0;

  • }

  • 8.臭名遠揚的goto語句

    很少使用

  • #include <stdio.h>

  • int main()

  • {

  • int sum = 0;

  • int i;

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

  • {

  • printf("%d ", i);

  • if(i==3){

  • goto LOOP;//滿足條件就執行goto語句

  • }

  • }

  • //執行goto

  • LOOP:printf("結束for循環了...."); //請選擇合適位置添加標識符

  • return 0;

  • }

  • 9.形參與實參

    形參:形參是在定義函數名和函數體的時候使用的參數,目的是用來接收調用該函數時傳入的參數;

    實參:實參是在調用時傳遞該函數的參數。

    函數的形參和實參具有以下特點:

  • 形參只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變數。

  • 實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值等辦法使實參獲得確定值。

  • 在參數傳遞時,實參和形參在數量上,類型上,順序上應嚴格一致,否則會發生類型不匹配」的錯誤。

  • 10.函數返回值注意

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

    11.遞歸

  • #include <stdio.h>


  • int getPeachNumber(int n) //這里要定義n,要不編譯器會報錯!

  • {

  • int num;

  • if(n==10)

  • {

  • return 1;

  • }

  • else

  • {

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

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

  • }

  • return num;

  • }

  • int main()

  • {

  • int num = getPeachNumber(1);

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

  • return 0;

  • }

  • 12.變數存儲類別 !

    12.1.生存周期劃分存儲方式

    C語言根據變數的生存周期來劃分,可以分為靜態存儲方式和動態存儲方式。

    靜態存儲方式:是指在程序運行期間分配固定的存儲空間的方式。靜態存儲區中存放了在整個程序執行過程中都存在的變數,如全局變數。

    動態存儲方式:是指在程序運行期間根據需要進行動態的分配存儲空間的方式。動態存儲區中存放的變數是根據程序運行的需要而建立和釋放的,通常包括:函數形式參數;自動變數;函數調用時的現場保護和返回地址等。

    12.2.存儲類型劃分

    C語言中存儲類別又分為四類:自動(auto)、靜態(static)、寄存器的(register)和外部的(extern) ;

  • 用關鍵字auto定義的變數為自動變數,auto可以省略,auto不寫則隱含定為「自動存儲類別」,屬於動態存儲方式。

  • 用static修飾的為靜態變數,如果定義在函數內部的,稱之為靜態局部變數;如果定義在函數外部,稱之為靜態外部變數。

  • 注意:靜態局部變數屬於靜態存儲類別,在靜態存儲區內分配存儲單元,在程序整個運行期間都不釋放;靜態局部變數在編譯時賦初值,即只賦初值一次;如果在定義局部變數時不賦初值的話,則對靜態局部變數來說,編譯時自動賦初值0(對數值型變數)或空字元(對字元變數)

  • 為了提高效率,C語言允許將局部變數的值放在CPU中的寄存器中,這種變數叫「寄存器變數」,用關鍵字register作聲明。

  • 注意:只有局部自動變數和形式參數可以作為寄存器變數;一個計算機系統中的寄存器數目有限,不能定義任意多個寄存器變數;局部靜態變數不能定義為寄存器變數。

  • 用extern聲明的的變數是外部變數,外部變數的意義是某函數可以調用在該函數之後定義的變數。

  • #includ <stdio.h>

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

  • int main()

  • {

  • //定義外部局部變數

  • extern int x;

  • return 0;

  • }

  • int x=100;

  • 13.內部函數外部函數 !

    在C語言中不能被其他源文件調用的函數稱為內部函數 ,內部函數由static關鍵字來定義,因此又被稱為靜態函數,形式為:

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

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

    在C語言中能被其他源文件調用的函數稱為外部函數 ,外部函數由extern關鍵字來定義,形式為:

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

    C語言規定,在沒有指定函數的作用范圍時,系統會默認認為是外部函數,因此當需要定義外部函數時extern也可以省略。 extern可以省略; 14.數組 數組:一塊連續的,大小固定並且裡面的數據類型一致的內存空間, 數組的聲明:數據類型 數組名稱[長度n]

  • 數據類型 數組名稱[長度n] = {元素1,元素2,元素3,......};

  • 數據類型 數組名稱[] = {元素1,元素2,元素3,......};

  • 數類類型 數組名稱[長度n]; 數組名稱[0] = 元素1;數組名稱[1] = 元素2;...... 注意: 1、數組的下標均以0開始; 2、數組在初始化的時候,數組內元素的個數不能大於聲明的數組長度; 3、如果採用第一種初始化方式,元素個數小於數組的長度時,多餘的數組元素初始化為0; 4、在聲明數組後沒有進行初始化的時候,靜態(static)和外部(extern)類型的數組元素初始化元素為0,自動(auto)類型的數組的元素初始化值不確定。

  • 15.數組遍歷

  • #include <stdio.h>


  • int main()

  • {

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

  • int i;

  • for(i=0;i<10;i++)

  • {

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

  • }

  • return 0;

  • }

  • 數組的冒泡排序

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

  • 字元串與數組

  • 在C語言中,是沒有辦法直接定義子字元串數據類型的,需使用數組來定義所要的字元串,形式如下:

  • char 字元串名稱[長度] = "字元串內容";

  • char 字元串名稱[長度] = {'字元串1','字元串2',....,'字元串n',''};

  • 注:

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

  • 採用第二種方式最後一個元素必須是'',表示結束;

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

  • 16.字元串函數

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

  • strcmp(s1,s2):比較字元串;比較的時候會把字元串轉換成ASCII碼再進行比較,返回結果為0表示s1和s2的ASCII碼值相等,返回結果為1表示s1比s2的ASCII碼大,返回結果為-1表示s1比s2的ACSII碼小;

  • strcpy(s1,s2):字元串拷貝;s2會取代s1中的內容;

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

  • atoi(s1)將字元串轉為整數!

  • 17.多維數組

    數據類型 數組名稱[常量表達式1]...[常量表達式n];

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

  • 數據類型 數組名稱[常量表達式1][常量表達式2]...[常量表達式n] = {{值1,..,值n},{值1,..,值n},...,{值1,..,值n}};

  • 數據類型 數組名稱[常量表達式1][常量表達式2]...[常量表達式n]; 數組名稱[下標1][下標2]...[下標n] = 值;

  • 多維數組初始化要注意以下事項:

  • 採用第一種始化時數組聲明必須指定列的維數。因為系統會根據數組中元素的總個數來分配空間,當知道元素總個數以及列的維數後,會直接計算出行的維數;

  • 採用第二種初始化時數組聲明必須同時指定行和列的維數。

  • 18.多維度數組的遍歷

    使用嵌套循環

    注意:多維數組的每一維下標均不能越界!

    19.結構體

    C 數組允許定義可存儲相同類型數據項的變數,結構是 C 編程中另一種用戶自定義的可用的數據類型,它允許您存儲不同類型的數據項。

    結構用於表示一條記錄,假設您想要跟蹤圖書館中書本的動態,您可能需要跟蹤每本書的下列屬性:

  • Title

  • Author

  • Subject

  • Book ID

  • 定義結構

    為了定義結構,您必須使用 struct 語句。struct 語句定義了一個包含多個成員的新的數據類型,struct 語句的格式如下:

  • struct tag {

  • member-list

  • member-list

  • member-list

  • ...

  • } variable-list ;

  • tag 是結構體標簽。

    member-list 是標準的變數定義,比如 int i; 或者 float f,或者其他有效的變數定義。

    variable-list 結構變數,定義在結構的末尾,最後一個分號之前,您可以指定一個或多個結構變數。下面是聲明 Book 結構的方式:

  • struct Books

  • {

  • char title[50];

  • char author[50];

  • char subject[100];

  • int book_id;

  • } book;

  • 在一般情況下,tag、member-list、variable-list 這 3 部分至少要出現 2 個。以下為實例:

  • //此聲明聲明了擁有3個成員的結構體,分別為整型的a,字元型的b和雙精度的c

  • //同時又聲明了結構體變數s1

  • //這個結構體並沒有標明其標簽

  • struct

  • {

  • int a;

  • char b;

  • double c;

  • } s1;


  • //此聲明聲明了擁有3個成員的結構體,分別為整型的a,字元型的b和雙精度的c

  • //結構體的標簽被命名為SIMPLE,沒有聲明變數

  • struct SIMPLE

  • {

  • int a;

  • char b;

  • double c;

  • };

  • //用SIMPLE標簽的結構體,另外聲明了變數t1、t2、t3

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


  • //也可以用typedef創建新類型

  • typedef struct

  • {

  • int a;

  • char b;

  • double c;

  • } Simple2;

  • //現在可以用Simple2作為類型聲明新的結構體變數

  • Simple2 u1, u2[20], *u3;

  • 訪問結構成員

    為了訪問結構的成員,我們使用成員訪問運算符(.)。成員訪問運算符是結構變數名稱和我們要訪問的結構成員之間的一個句號。您可以使用 struct 關鍵字來定義結構類型的變數。下面的實例演示了結構的用法:

  • #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 ", Book1.title);

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

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

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


  • /* 輸出 Book2 信息 */

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

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

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

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


  • return 0;

  • }

  • 學好C++才是入職大廠的敲門磚! 當年要是有這課,我的C++也不至於這樣

    已失效

    20.共用體

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

  • #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 ", sizeof(data));


  • return 0;

  • }

  • 21.指針

  • #include <stdio.h>


  • int main ()

  • {

  • int var = 20; /* 實際變數的聲明 */

  • int *ip; /* 指針變數的聲明 */


  • ip = &var; /* 在指針變數中存儲 var 的地址 */


  • printf("Address of var variable: %p ", &var );


  • /* 在指針變數中存儲的地址 */

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


  • /* 使用指針訪問值 */

  • printf("Value of *ip variable: %d ", *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... ");

  • fputs("This is testing for fputs... ", 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 ", buff );


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

  • printf("2: %s ", buff );


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

  • printf("3: %s ", buff );

  • fclose(fp);


  • }

  • C語言與C++學習路線

    23.排序演算法

    十大經典排序演算法(動態演示+代碼)

    24.查找演算法

    九種查找演算法

    25.面試知識

    C語言與C++面試知識總結

    26.字元串操作

    字元串操作的全面總結

    27.C語言常用標准庫解讀

    C語言常用標准庫解讀

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

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

    29. 常見的C語言內存錯誤及對策

    常見的C語言內存錯誤及對策

    30. C語言實現面向對象的原理

    C語言實現面向對象的原理

    31. C語言/C++內存管理

    看完這篇你還能不懂C語言/C++內存管理?

    32. 再談C語言指針

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

    C語言函數指針之回調函數

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

    33. C語言預處理命令

    長文詳解:C語言預處理命令

    34. C語言高效編程與代碼優化

    C語言高效編程與代碼優化

    35. C語言結構體

    C語言之結構體就這樣被攻克了!值得收藏!

    36. 原碼, 反碼, 補碼 詳解

    原碼, 反碼, 補碼 詳解

    37. C語言宏定義

    簡述C語言宏定義的使用

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

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

熱點內容
海量數據存儲與處理 發布:2024-04-19 16:33:46 瀏覽:541
微信聊天記錄怎麼恢復安卓手機 發布:2024-04-19 16:33:24 瀏覽:810
我的世界正版好玩的pvp伺服器 發布:2024-04-19 16:28:38 瀏覽:17
光遇安卓渠道服怎麼更換實名認證 發布:2024-04-19 16:18:08 瀏覽:263
關閉ip訪問 發布:2024-04-19 15:59:18 瀏覽:730
大屏安卓系統哪個好 發布:2024-04-19 15:49:10 瀏覽:792
解壓瀏覽器 發布:2024-04-19 15:39:22 瀏覽:575
pythonutfgbk 發布:2024-04-19 15:32:20 瀏覽:221
騰訊雲伺服器搭建網站打不開 發布:2024-04-19 15:32:15 瀏覽:967
光遇腳本輔助下載免費ios 發布:2024-04-19 15:22:11 瀏覽:243