最新国产在线不卡AV,国产又爽又黄的视频免费看,精品综合久久久久久97,日韩欧美高清中文字幕免费一区二区

            科普

            關于c語言的常用知識點有哪些 IT知識

            電腦知識優(yōu)爾供稿

            C語言是僅產(chǎn)生少量的機器語言以及不需要任何運行環(huán)境支持便能運行的高效率程序設計語言。下面一起來看看9252兒童網(wǎng)小編為大家整理的c語言的常用知識點有哪些,歡迎閱讀,僅供參考。

            C語言知識點大匯總

            ◆知識點1:交換兩個變量值的方法

            1)采用第三方變量(最容易想到的方法)

            2)采用加減法進行值得交換(面試時常用**)

            代碼如下:

            b = a - b;a = a - b;b = a + b;

            3)采用按位異或的位方式

            代碼如下:

            a = a^b;b = a^b; a = a^b;

            ◆知識點2:取余運算%的結果與被除的符號相同,結果為兩個正數(shù)取余后前面加符號

            ◆知識點3:sizeof的使用

            sizeof是一種運算符不要想當然理解為函數(shù)

            sizeof使用時可以不加()

            sizeof可以加變量、常量、數(shù)據(jù)類型

            跟數(shù)據(jù)類型是必須加()

            ◆知識點4:#include編譯預處理命令與多文件團隊開發(fā)

            include編譯預處理命令可以認為是:將后面的文件內容拷貝到當前的文件中

            多文件團隊開發(fā):模塊分別編譯成.o都不能鏈接成功,合起來鏈接生成最終程序。

            鏈接:把項目中所有相關聯(lián)的.o目標文件、C語言函數(shù)庫合并在一起,生成可執(zhí)行文件

            ——函數(shù)的定義放.c文件,函數(shù)的聲明放.h文件

            ——如果要使用某個.c文件中定義的函數(shù),只需要#include這個.c文件對應的.h文件

            ——h文件的作用:被別人拷貝。編譯鏈接的時候不需要管.h文件

            ◆知識點5:數(shù)組的幾種初始化方式如下:

            int a[3] = {10, 9, 6};int a[3] = {10,9};int a[] = {11, 7, 6};int a[4] = {[1]=11,[0] = 7};(知道有此種初始化方式即可)

            ◆知識點6:數(shù)組的內存分析和注意點

            存儲空間的劃分(內存的分配是從高地址到低地址進行的,但一個數(shù)組內部元素又是從低到高進行的)【注:對于以后學習重要】

            數(shù)組名的作用,查看元素地址

            注意數(shù)組不要越界

            ◆知識點7:字符串知識點

            "123”其實是由’1’、’2’、’3’、’\0’組成

            字符串的輸出”%s”,’\0’是不會輸出的

            ◆知識點8 : 字符串處理函數(shù):strlen()

            計算的是字符數(shù),不是字數(shù)

            計算的字符不包括’\0’,一個漢字相當于3個字符

            例子:"哈haha" 字符數(shù)為7

            從某個地址開始的數(shù)字符個數(shù),知道遇到’\0’為止

            指針部分在C語言中占據(jù)重要地位,所以重點學習與整理了指針的知識:

            ◆知識點9:指針定義的格式

            變量類型 *變量名

            如:Int *p

            ◆知識點10:指針作用

            能夠根據(jù)一個地址值,訪問對應的存儲空間

            例:

            Int *p;Int a = 90;P = &a;*p = 10;//把10賦值給p所指的存儲空間

            ◆知識點11:指針使用注意

            Int *p只能指向int類型的數(shù)據(jù)

            指針變量只能存儲地址

            指針變量未經(jīng)初始化不要拿來間接訪問其他存儲空間

            ◆知識點12:指針與數(shù)組

            遍歷數(shù)組

            int ages[5] = {10, 4, 9, 44, 99};for(int i = 0; i<5; i++){ printf("%d\n", ages[i]);}

            使用指針遍歷數(shù)組:

            int *p;// 指針變量P指向了數(shù)組的首地址p = &ages[0];// 使用指針遍歷數(shù)組for(int i = 0; i<5; I++){ printf("ages[%d] = %d\n", i, *(p + i));}

            注:指針+ 1取決于指針的類型

            注:數(shù)組的訪問方式

            數(shù)組名[下標]

            指針變量名[下標]

            *(p + i)

            ◆知識點12:指針與字符串

            定義字符串的兩種方式:

            1、利用數(shù)組

            Char name[] = “Andyzhao”

            特點:字符串里的字符可以修改

            適用場合:字符串內容需要經(jīng)常修改

            2、利用指針

            Char *name = “itcast”

            特點:字符串是一個常量,字符串里面的字符不能修改

            使用場合:字符串的內容不需要修改,而這個字符串經(jīng)常使用

            ◆知識點13:預處理指令(三種):

            宏定義

            條件編譯

            文件包含

            1、宏定義的配對使用和帶參數(shù)的宏:

            #define ... #undef

            帶參數(shù)的宏:

            #define sum(v1,v2) ((v1) + (v2))//括號是必須的

            例如:

            #define pingfang(a) a*a #define pingfang(a) (a*a)

            調用時

            pingfang(10)/pingfang(2)//不正確 pingfang(5+5)//不正確 帶參數(shù)的宏效率比函數(shù)高

            2、條件編譯(一般是判斷宏的值)

            #if 條件 ... #elif 條件 ... #else ... #endif(非常重要)不然后面的代碼全部無效

            3、文件包含:

            <>表示系統(tǒng)自帶的文件,""表示自定義文件

            不允許循環(huán)包含,比如a.h包含b.h,b.h又包含a.h

            ◆知識點14:typedef 只是給類型起了個別名并不是定義新類型

            struct Student{ int age; char *name; }; typedef struct Student Student; 等價于typedef struct Student{ int age; char *name; }Student; 也等價于typedef struct { int age; char *name; }Student;

            類似的給枚舉類型起名

            typedef enum Sex { Man,Women }Sex;

            下面這種情況的寫法比較特殊

            //下面是函數(shù)指針類型的自定義數(shù)據(jù)類型,返回值類型和參數(shù)類型要匹配

            #include typedef int (*TypeFuncPointer)(int, int); int add(int a, intb) { return a + b; } int minus(int a, intb) { return a - b; } int main() { TypeFuncPointer p = add;//使用自定義類型Î TypeFuncPointer p2 = minus;//使用自定義類型Î printf("add = %d\n",p(1, 2)); printf("minus = %d\n",p2(1, 2)); return 0; }

            下面是定義結構體的指針類型

            typedef struct Student{ int age; char *name; }*PtrStu; //使用方式 Student stu ={18, "zhangsan"}; PtrStu p = &stu;

            宏定義也是可以為類型起名的

            #define Integer int 相當于typedef int Integer

            注意和typedef的區(qū)別

            例如:

            typedef char * String #define String2char *

            ◆知識點15:static和 extern區(qū)別是能否進行跨文件訪問

            ①.函數(shù)

            ②.變量

            1、對函數(shù)的作用:

            外部函數(shù):定義的函數(shù)能被本文件和其他文件訪問

            內部函數(shù):定義的函數(shù)只能被本文件訪問

            默認情況下,所有函數(shù)都是外部函數(shù)(相當于帶關鍵字extern),所以可以省略

            extern作用:

            完整的定義和引用一個外部函數(shù)都加extern

            引用時也是默認是外部函數(shù)所以也省略extern

            static作用:定義一個內部函數(shù)

            使用:static返回類型函數(shù)名(參數(shù)列表)

            不能被其他文件調用

            一個項目中,本文件的外部函數(shù)名不能和其他文件的外部函數(shù)同名(error)

            本文件中的內部函數(shù)(static)可以和其他文件的函數(shù)名同名的

            2、對變量的作用:

            全局變量分為兩種:

            外部變量:定義的變量可以被其他文件訪問

            ①.默認情況下所有的全局變量都是外部變量

            ②.不同文件中的同名外部變量都代表同一個

            ③.定義一個外部變量不加extern,聲明才加extern

            同樣的聲明是沒有錯誤的

            內部變量:定義的變量不能被其他文件訪問

            學好C語言必須要掌握四個知識點

            (一) 基本的數(shù)據(jù)操作,運算規(guī)則,常見程序結構設計

            很多人覺得這么幾點我都看了多少遍了,早就爛熟于心了。舉個簡單的例子,printf打印可能是最常使用的函數(shù)了,但是這個函數(shù)在真正大型工程中,很少直接去調用,為什么?

            主要項目中涉及到封裝的概念,什么時機加入打印在調試大型系統(tǒng)的時候,更容易定位問題,這些編程思維對于初學者來說很難接觸到,也很難想到,任何復雜的事物都是由簡單的細節(jié)環(huán)繞而成,在學習之初不要覺得這些很簡單的數(shù)據(jù)操作很簡單,要真正納入自己的知識體系還是需要花點心思??梢栽趯W習的時候,網(wǎng)上搜一些資料看這些數(shù)據(jù)操作以及運算規(guī)則是如何使用具體的場景中。

            很多人初學者可能會有疑問覺得去哪里找這些代碼去,世界軟件發(fā)展了這么多年,最不缺的就是代碼,在github或者開源中國里面代碼多如牛毛。學習的對象也是數(shù)不勝數(shù)。有點扯遠了,這觸及到另外一個學習編程的步驟,學會看懂別人的代碼,然后才能嘗試寫出優(yōu)質的代碼,知己知彼百戰(zhàn)不殆。曾經(jīng)聽一個編碼高手說過“技術這東西只要花的時間長,肯下功夫早晚都能搞定,只要進入狀態(tài)了,什么方法都能想的出來”,看書學習也罷,看視頻學習也罷,需要讓自己插上聯(lián)想的翅膀,把自己的思維境界打開。

            說到運算規(guī)則,涉及到代碼的格式的問題,說說身邊人的事情,去年招了一個剛畢業(yè)的學生,基本功不是很好,但是有一個特質專注力很高,能沉得住氣。當初見第一眼就覺得是個做軟件的苗子,有了第一印象后面的事情就順理成章了。很多經(jīng)驗不是很足的同學,參加面試回答的問題也不是很理想,但還是被錄取了,其中一個因素就是你身上有公司需要的基因,這多少算來有點運氣的成分在里面了。今年這哥們覺得很突然,說為啥當初剛開始寫代碼的時候為啥不要求那么嚴格,說了幾句話,初學者特別是基礎很差的情況下,要求太多只會讓一個人慢慢失去對這個行業(yè)的信心,也許會錯失一個軟件天才。隨著時間推移能夠邁入軌道了,那么就該要求一些基本的職業(yè)素養(yǎng)了,代碼的格式,就該要求了。很多初學者覺得寫的代碼越高深,越讓人看不懂才叫高手,有這種想法的趁早打住。大道至簡,這四個字在任何時候都不過時。做的復雜邏輯混亂只能說明當初在設計的時候,沒有徹底想明白,想明白了展示出來一般都比較舒坦平整。

            (二) 指針,數(shù)組,結構體,枚舉靈活運用

            不要只看這幾個字,幾乎是C語言里面最精髓的代表。數(shù)組這個概念基本上還能理解透徹,說到指針這個應用場景太多,而且在什么項目中幾乎都離不開指針的使用。變化無窮,會用的覺得其樂無窮,不懂的哭上天。記得在互聯(lián)網(wǎng)有個流傳很長時間的文章,林銳的我的大學十年(有興趣的同學可以去網(wǎng)上查閱,編程的人生也可以很彪悍,記得當初發(fā)燒期間還專門買了林銳的一本高質量編程)提到了做了一個C語言的項目,為了繞開指針最后全部用數(shù)組代替實現(xiàn)了,后來做的項目也黃了。不是說因為用數(shù)組使用就不行,項目的定位方向出問題了。用數(shù)組完全替代指針這條路也是可行的,但是會花費相當大的周折。

            說到指針,不能不提到計算機專業(yè)開的另外一個課程,數(shù)據(jù)結構。數(shù)據(jù)結構就是原生數(shù)據(jù)或者組合數(shù)據(jù)的混合運用的一種規(guī)則集合。連接這些數(shù)據(jù),將這些數(shù)據(jù)有機的串聯(lián)在一起,指針起到非常關鍵的作用。經(jīng)常見到初學者說數(shù)據(jù)結構和天書差不多,幾乎看不懂,建議回爐好好學習指針,說到指針還是存在很多故事,在入門之初有幸遇到一位水平極高的老手帶著,基本功扎實的不得了,記得有一次使用指針忘記初始化,這老手嘆了口氣,當年我每次用指針錯一次,就被項目經(jīng)理當眾批評一次,后來再也不敢不初始化使用了,所以印象才能這么深刻,話說到這里剛入門的小白挨多少批評或者鄙視,是最正常不過的事情了,這對于編程界來說稀松平常。

            結構體在項目中用的特別多,很多初學者覺得結構體都在教材的最后章節(jié),覺得不是那么重要。其實結構體在一定層次上決定著軟件的脈絡框架。很多高手在設計模塊的時候,不是急急忙忙的寫代碼,而是先把頭文件里面的結構體設計出來,簡單的來說就是把數(shù)據(jù)模型先搞起來。有個數(shù)據(jù)模型代碼實現(xiàn)起來就比較輕松了。面向對象里面類的老祖宗就是結構體延伸來的。關于結構體如何賦值,包含著指針的情況下,如何賦值這些都是常見的初學者經(jīng)常容易掉的坑。枚舉一般用在羅列不同類別,存在多個相同功能的實物,搭配switch使用的很多,在這就不一一列舉了。

            (三)活用函數(shù)

            函數(shù)是面向過程編程最基本的單位,任何C程序的運行都有函數(shù)的身影,因為程序的入口main就是一個函數(shù),函數(shù)傳值方式,調用方式(遞歸,回調)都是函數(shù)內在的表現(xiàn)。函數(shù)的里面又可以嵌套別的函數(shù),使得程序慢慢變得復雜化。前幾天和一個非計算機專業(yè)的聊天,談到如何學習函數(shù),說到了數(shù)學不好是不是編程不好學。函數(shù)的編程基本因子,和數(shù)學里面的函數(shù)有一定的共性,但編程里面的含義引申的層次更多,數(shù)學在一定層面就是提供一個工具或者方法而已,函數(shù)的設計里面夾雜著諸多的編程思想。

            檢驗一個程序員水平的高低可以簡單讓用函數(shù)實現(xiàn)一個相對復雜一些的功能,基本上就能看出編程思想掌握的深淺程度。不妨自己實現(xiàn)一個函數(shù),檢驗下自己編程水準,函數(shù)的檢驗是面試里面必不可少的題目。

            一個函數(shù)基本上代表一個小的模塊,多個模塊有機的組合形成一個系統(tǒng)。建議初學者在學習函數(shù)的時候,不要滿足于會使用函數(shù),還要讓自己站的層次更高一點。這能決定自己是一個純粹的執(zhí)行者還是未來框架的設計者,不要覺得這些東西距離自己很遠,慢慢的積累時間長了,慢慢也就從量變變成質變了。

            (四)對于內存和性能有少許的理解

            內存和性能對于初學者來說,可能覺得很遙遠,其實這兩樣東西貫穿整個編碼界,檢驗軟件功能最重要的兩項指標,軟件占用內存多少,運行時間長了會不會讓系統(tǒng)變緩慢。同時開啟在多個軟件的時候,你設計的軟件是不是變得很卡頓,這些都是大家平常在使用軟件時候經(jīng)常遇見的現(xiàn)象。今天在車上閑聊,司機說當年的XP運行的多好,非要升級搞什么windows7或者windows10之類的,把電腦搞的卡的要死。這其實是微軟操作系統(tǒng)設計理念的一個延伸,用空間換時間。說的通俗點,提前把一些常見的軟件加載到內存里面,使用的時候流暢度會感覺好一些,理念這么好,為啥還變得這么卡慢,主要機器配置太低了。微軟這幫大佬認為你機器內存和CPU還是相當不錯的,因為現(xiàn)在硬件成本基本上接近白菜價了。在機器配置還不錯的情況下,windows7,10運行的速度還是很不錯的。透過這些生活常識,歸結對編程,對編碼的認知程度上,慢慢就會建立起自己的知識體系。

            這點在嵌入式設備上表現(xiàn)的很明顯,一般嵌入式設備內存和cpu配置不是高,內存就要省著點用,占用CPU很高的一些函數(shù)盡量少去調用,避開雷區(qū),這些經(jīng)驗就要靠平時多去積累,多去思考,才會融入自己知識體系,才會慢慢認識到寫代碼其實在編程時候,只占很小的一部分,大部分的時間還是在思考如何讓代碼更加利索,內存更少的去使用,cpu占用率低一些。認識到這些時候,層次就不一樣了,就會越來越覺得設計思想的重要性了。

            C語言基礎知識點

            【知識點1】C程序

            C語言程序結構有三種: 順序結構 , 循環(huán)結構(三個循環(huán)結構), 選擇結構(if 和 switch)

            【知識點2】main函數(shù)

            每個C語言程序中main 函數(shù)是有且只有一個。讀程序都要從main()入口, 然后從最上面順序往下讀(碰到循環(huán)做循環(huán),碰到選擇做選擇)。

            【知識點3】存儲形式

            計算機的數(shù)據(jù)在電腦中是以二進制的形式保存。最低的存儲單元是bit(位),位是由為 0 或者1構成。 byte 是指字節(jié), 一個字節(jié) = 八個位。數(shù)據(jù)存放的位置就是它的地址。

            【知識點4】注釋

            是對程序的`說明,可出現(xiàn)在程序中任意合適的地方,注釋從“/*”開始到最近一個“*/”結束,其間任何內容都不會被計算機執(zhí)行,注釋不可以嵌套。

            【知識點5】書寫格式

            每條語句的后面必須有一個分號,分號是語句的一部分。一行內可寫多條語句,一個語句可寫在多行上。

            【知識點6】標識符

            合法的用戶標識符考查:

            合法的要求是由字母,數(shù)字,下劃線組成。有其它元素就錯了。

            并且第一個必須為字母或則是下劃線。第一個為數(shù)字就錯了。

            C語言標識符分如下3類

            (1)關鍵字。它們在程序中有固定的含義,不能另作他用。如int、for、switch等。

            (2)預定義標識符。預先定義并具有特定含義的標識符。如define、include等。

            (3)用戶標識符。用戶根據(jù)需要定義的標識符,符合命名規(guī)則且不與關鍵字相同。

            關鍵字不可以作為用戶標識符號。main define scanf printf 都不是關鍵字。迷惑你的地方If 是可以做為用戶標識符。因為If 中的第一個字母大寫了,所以不是關鍵字。

            【知識點7】實型數(shù)據(jù)

            實型數(shù)據(jù)的合法形式:小數(shù)形式和指數(shù)形式。掌握判定指數(shù)形式合法性。

            2.333e-1 就是合法的,且數(shù)據(jù)是2.333×10-1。

            考試口訣:e 前e 后必有數(shù),e 后必為整數(shù)。

            【知識點8】字符

            字符數(shù)據(jù)的合法形式::

            1 是字符占一個字節(jié),"1"是字符串占兩個字節(jié)(含有一個結束符號)。

            0 的ASCII 數(shù)值表示為48,a 的ASCII 數(shù)值是97,A的ASCII 數(shù)值是65。

            字符型和整數(shù)是近親:

            char a = 65 ;

            printf(“%c”, a); 得到的輸出結果:a

            printf(“%d”, a); 得到的輸出結果:65

            一般考試表示單個字符錯誤的形式:65 "1"

            字符是可以進行算術運算的,記?。?0-0=48

            大寫字母和小寫字母轉換的方法: A+32=a 相互之間一般是相差32。

            【知識點9】整型數(shù)據(jù)

            整型一般是兩個字節(jié), 字符型是一個字節(jié),雙精度一般是4 個字節(jié):

            考試時候一般會說,在16 位編譯系統(tǒng),或者是32 位系統(tǒng)。碰到這種情況,不要去管,

            一樣做題。掌握整型一般是兩個字節(jié), 字符型是一個字節(jié),雙精度一般是4 個字節(jié)就可以了。

            【知識點10】轉義字符

            轉義字符的考查:

            在程序中 int a = 0x6d,是把一個十六進制的數(shù)給變量a 注意這里的0x 必須存在。

            在程序中 int a = 06d, 是一個八進制的形式。

            在轉義字符中, ’x6d’ 才是合法的,0 不能寫,并且x 是小寫。

            ‘141’ 是合法的, 0 是不能寫的。

            ‘108’是非法的,因為不可以出現(xiàn)8。

            【知識點11】算術運算

            算術運算符一共有+、—、*、/、%這五個。%符號兩邊要求是整數(shù)。不是整數(shù)就錯了。

            三種取整丟小數(shù)的情況:不是四舍五入是舍掉小數(shù)部分。

            1、int a =1.6;

            2、(int)a;

            3、1/2; 3/2;

            【知識點12】強制類型轉換

            將一個運算對象轉換成指定類型,格式為(類型名)表達式

            一定是 (int)a 不是 int(a),注意類型上一定有括號的。

            注意(int)(a+b) 和(int)a+b 的區(qū)別。前是把a+b 轉型,后是把a 轉型再加b。

            【知識點13】賦值

            是表達式就一定有數(shù)值。

            賦值表達式:表達式數(shù)值是最左邊的數(shù)值,a=b=5;該表達式為5,常量不可以賦值。

            復合賦值運算符:注意:a*=m+2 是 a=a*(m+2)

            自加、自減表達式:假設a=5,++a(表達式的值為6), a++(表達式的值為5);

            j=a++;等價于j=a;a=a+1; 而j=++a;等價于a=a+1;j=a;。

            考試口訣:++在前先加后用,++在后先用后加。

            【知識點14】逗號運算

            逗號表達式:優(yōu)先級別最低; 表達式的數(shù)值逗號最右邊的那個表達式的數(shù)值。

            (2,3,4)的表達式的數(shù)值就是4。

            【知識點15】數(shù)制轉換

            一定要記住二進制 如何轉換成十進制。

            八進制是沒有8 的,逢8 進1,018 的數(shù)值是非法的。

              為你推薦