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

            科普

            c語言冷知識有哪些_C語言知識點歸納 IT知識

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

            C語言不但執(zhí)行效率高而且可移植性好,可以用來開發(fā)應用軟件、驅(qū)動、操作系統(tǒng)等。C語言也是其它眾多高級語言的鼻祖語言,所以說學習C語言是進入編程世界的必修課。下面是9252兒童網(wǎng)小編為大家整理的c語言冷知識,希望對你們有幫助。

            C語言冷知識

            C語言屬強類型語言

            (1)編程語言分2種:強類型語言和弱類型語言。強類型語言中所有的變量都有自己固定的類型,這個類型有固定的內(nèi)存占用,有固定的解析方法;弱類型語言中沒有類型的概念,所有變量全都是一個類型(一般都是字符串的),程序在用的時候再根據(jù)需要來處理變量。

            (2)C語言就是典型的強類型語言,C語言中所有的變量都有明確的類型。因為C語言中的一個變量都要對應內(nèi)存中的一段內(nèi)存,編譯器需要這個變量的類型來確定這個變量占用內(nèi)存的字節(jié)數(shù)和這一段內(nèi)存的解析方法。

            4.8.4.3、void類型的本質(zhì)

            (1)void類型的正確的含義是:不知道類型,不確定類型,還沒確定類型。

            (2)void a;定義了一個void類型的變量,含義就是說a是一個變量,而且a肯定有確定的類型,只是目前我還不知道a的類型,還不確定,所以標記為void。

            4.8.4.4、為什么需要void類型

            (1)什么情況下需要void類型?其實就是在描述一段還沒有具體使用的內(nèi)存時需要使用void類型。

            (2)void的一個典型應用案例就是malloc的返回值。我們知道m(xù)alloc函數(shù)向系統(tǒng)堆管理器申請一段內(nèi)存給當前程序使用,malloc返回的是一個指針,這個指針指向申請的那段內(nèi)存。malloc剛申請的這段內(nèi)存尚未用來存儲數(shù)據(jù),malloc函數(shù)也無法預知這段內(nèi)存將來被存放什么類型的數(shù)據(jù),所以malloc無法返回具體類型的指針,解決方法就是返回一個void 類型,告訴外部我返回的是一段干凈的內(nèi)存空間,尚未確定類型。所以我們在malloc之后可以給這段內(nèi)存讀寫任意類型的數(shù)據(jù)。

            (3)void 類型的指針指向的內(nèi)存是尚未確定類型的,因此我們后續(xù)可以使用強制類型轉(zhuǎn)換強行將其轉(zhuǎn)為各種類型。這就是void類型的最終歸宿,就是被強制類型轉(zhuǎn)換成一個具體類型。

            (4)void類型使用時一般都是用void ,而不是僅僅使用void。

            C語言小知識

            基本數(shù)據(jù)類型

            void:聲明函數(shù)無返回值或無參數(shù),聲明無類型指針,顯示丟棄運算結(jié)果。(C89標準新增)

            char:字符型類型數(shù)據(jù),屬于整型數(shù)據(jù)的一種。(K&R時期引入)

            int:整型數(shù)據(jù),表示范圍通常為編譯器指定的內(nèi)存字節(jié)長。(K&R時期引入)

            float:單精度浮點型數(shù)據(jù),屬于浮點數(shù)據(jù)的一種。(K&R時期引入)

            double:雙精度浮點型數(shù)據(jù),屬于浮點數(shù)據(jù)的一種。(K&R時期引入)

            _Bool:布爾型(C99標準新增)

            _Complex:復數(shù)的基本類型(C99標準新增)

            _Imaginary:虛數(shù),與復數(shù)基本類型相似,沒有實部的純虛數(shù)(C99標準新增)

            _Generic:提供重載的接口入口(C11標準新增)

            類型修飾關(guān)鍵字

            short:修飾int,短整型數(shù)據(jù),可省略被修飾的int。(K&R時期引入)

            long:修飾int,長整型數(shù)據(jù),可省略被修飾的int。(K&R時期引入)

            long long:修飾int,超長整型數(shù)據(jù),可省略被修飾的int。(C99標準新增)

            signed:修飾整型數(shù)據(jù),有符號數(shù)據(jù)類型。(C89標準新增)

            unsigned:修飾整型數(shù)據(jù),無符號數(shù)據(jù)類型。(K&R時期引入)

            restrict:用于限定和約束指針,并表明指針是訪問一個數(shù)據(jù)對象的唯一且初始的方式。(C99標準新增)

            復雜類型關(guān)鍵字

            struct:結(jié)構(gòu)體聲明。(K&R時期引入)

            union:聯(lián)合體聲明。(K&R時期引入)

            enum:枚舉聲明。(C89標準新增)

            typedef:聲明類型別名。(K&R時期引入)

            sizeof:得到特定類型或特定類型變量的大小。(K&R時期引入)

            inline:內(nèi)聯(lián)函數(shù)用于取代宏定義,會在任何調(diào)用它的地方展開。(C99標準新增)

            存儲級別關(guān)鍵字

            auto:指定為自動變量,由編譯器自動分配及釋放。通常在棧上分配。與static相反。當變量未指定時默認為auto。(K&R時期引入)

            static:指定為靜態(tài)變量,分配在靜態(tài)變量區(qū),修飾函數(shù)時,指定函數(shù)作用域為文件內(nèi)部。(K&R時期引入)

            register:指定為寄存器變量,建議編譯器將變量存儲到寄存器中使用,也可以修飾函數(shù)形參,建議編譯器通過寄存器而不是堆棧傳遞參數(shù)。(K&R時期引入)

            extern:指定對應變量為外部變量,即標示變量或者函數(shù)的定義在別的文件中,提示編譯器遇到此變量和函數(shù)時在其他模塊中尋找其定義。(K&R時期引入)

            const:指定變量不可被當前線程改變(但有可能被系統(tǒng)或其他線程改變)。(C89標準新增)

            volatile:指定變量的值有可能會被系統(tǒng)或其他線程改變,強制編譯器每次從內(nèi)存中取得該變量的值,阻止編譯器把該變量優(yōu)化成寄存器變量。(C89標準新增)

            流程控制關(guān)鍵字

            跳轉(zhuǎn)結(jié)構(gòu)

            return:用在函數(shù)體中,返回特定值(如果是void類型,則不返回函數(shù)值)。(K&R時期引入)

            continue:結(jié)束當前循環(huán),開始下一輪循環(huán)。(K&R時期引入)

            break:跳出當前循環(huán)或switch結(jié)構(gòu)。(K&R時期引入)

            goto:無條件跳轉(zhuǎn)語句。(K&R時期引入)

            分支結(jié)構(gòu)

            if:條件語句,后面不需要放分號。(K&R時期引入)

            else:條件語句否定分支(與if連用)。(K&R時期引入)

            switch:開關(guān)語句(多重分支語句)。(K&R時期引入)

            case:開關(guān)語句中的分支標記,與switch連用。(K&R時期引入)

            default:開關(guān)語句中的“其他”分支,可選。(K&R時期引入)

            編譯

            #define 預編譯宏

            #if 表達式 #else if 表達式 #else #endif 條件編譯

            #ifdef 宏 #else #endif 條件編譯

            #ifndef 宏 #else #endif 條件編譯與條件編譯

            語法結(jié)構(gòu)

            選擇結(jié)構(gòu)

            順序結(jié)構(gòu)的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。對于要先做判斷再選擇的問題就要使用選擇結(jié)構(gòu)。選擇結(jié)構(gòu)的執(zhí)行是依據(jù)一定的'條件選擇執(zhí)行路徑,而不是嚴格按照語句出現(xiàn)的物理順序。選擇結(jié)構(gòu)的程序設計方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當?shù)倪x擇語句。選擇結(jié)構(gòu)適合于帶有邏輯或關(guān)系比較等條件判斷的計算,設計這類程序時往往都要先繪制其程序流程圖,然后根據(jù)程序流程寫出源程序,這樣做把程序設計分析與語言分開,使得問題簡單化,易于理解。程序流程圖是根據(jù)解題分析所繪制的程序執(zhí)行流程圖。[23]

            循環(huán)結(jié)構(gòu)

            循環(huán)結(jié)構(gòu)可以減少源程序重復書寫的工作量,用來描述重復執(zhí)行某段算法的問題,這是程序設計中最能發(fā)揮計算機特長的程序結(jié)構(gòu),C語言中提供四種循環(huán),即goto循環(huán)、while循環(huán)、do while循環(huán)和for循環(huán)。四種循環(huán)可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環(huán),因為強制改變程序的順序經(jīng)常會給程序的運行帶來不可預料的錯誤。

            特別要注意在循環(huán)體內(nèi)應包含趨于結(jié)束的語句(即循環(huán)變量值的改變),否則就可能成了一個死循環(huán),這是初學者的一個常見錯誤。

            三個循環(huán)的異同點:用while和do…while循環(huán)時,循環(huán)變量的初始化的操作應在循環(huán)體之前,而for循環(huán)一般在語句1中進行的;while循環(huán)和for循環(huán)都是先判斷表達式,后執(zhí)行循環(huán)體,而do…while循環(huán)是先執(zhí)行循環(huán)體后判斷表達式,也就是說do…while的循環(huán)體最少被執(zhí)行一次,而while循環(huán)和for就可能一次都不執(zhí)行。另外還要注意的是這三種循環(huán)都可以用break語句跳出循環(huán),用continue語句結(jié)束本次循環(huán),而goto語句與if構(gòu)成的循環(huán),是不能用break和 continue語句進行控制的。

            順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)并不彼此孤立的,在循環(huán)中可以有分支、順序結(jié)構(gòu),分支中也可以有循環(huán)、順序結(jié)構(gòu),其實不管哪種結(jié)構(gòu),均可廣義的把它們看成一個語句。在實際編程過程中常將這三種結(jié)構(gòu)相互結(jié)合以實現(xiàn)各種算法,設計出相應程序,但是要編程的問題較大,編寫出的程序就往往很長、結(jié)構(gòu)重復多,造成可讀性差,難以理解,解決這個問題的方法是將C程序設計成模塊化結(jié)構(gòu)

            順序結(jié)構(gòu)

            順序結(jié)構(gòu)的程序設計是最簡單的,只要按照解決問題的順序?qū)懗鱿鄳恼Z句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。

            例如:a = 3,b = 5,現(xiàn)交換a,b的值,這個問題就好像交換兩個杯子水,這當然要用到第三個杯子,假如第三個杯子是c,那么正確的程序為:c = a; a = b; b = c;執(zhí)行結(jié)果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b =c;則執(zhí)行結(jié)果就變成a = b = c = 5,不能達到預期的目的,初學者最容易犯這種錯誤。順序結(jié)構(gòu)可以獨立使用構(gòu)成一個簡單的完整程序,常見的輸入、計算,輸出三步曲的程序就是順序結(jié)構(gòu),例如計算圓的面積,其程序的語句順序就是輸入圓的半徑r,計算s = 3.14159*r*r,輸出圓的面積s。不過大多數(shù)情況下順序結(jié)構(gòu)都是作為程序的一部分,與其它結(jié)構(gòu)一起構(gòu)成一個復雜的程序,例如分支結(jié)構(gòu)中的復合語句、循環(huán)結(jié)構(gòu)中的循環(huán)體等。

            C語言知識點歸納

            1、C語言程序是由多個函數(shù)構(gòu)成的。

            2、每個C語言程序中有且只有一個main函數(shù)。

            3、C語言不使用行號,無程序行的概念。

            4、程序中可使用空行和空格。

            5、C語言程序格式常用鋸齒形書寫格式。

            6、C語言程序中可加任意多的注釋,注釋形式/*……*/,并且注釋形式不能嵌套,即不能注釋里面又有另一個注釋。//行注釋是C++當中新增加的內(nèi)容。

            7、引用C語言標準庫函數(shù),一般要用文件包含預處理命令將其頭文件包含進來。

            8、用戶自定義的函數(shù),必須先定義后使用。

            9、變量必須先定義后使用。

            10、變量名,函數(shù)名必須是合法的標識符,標識符習慣用小寫字母,C語言是字母大小寫敏感的語言。

            11、不能用關(guān)鍵字來命名變量和函數(shù)。

            12、C語言的語句都是以分號結(jié)尾的。

            13、計算機中使用的進制數(shù)是二進制數(shù),而不是十進制數(shù),因為二進制只有兩個數(shù)碼,運算簡單便于硬件實現(xiàn),同時二進制便于邏輯運算。將十進制數(shù)轉(zhuǎn)換成二進制數(shù)應分為整數(shù)部分轉(zhuǎn)換和小數(shù)部分轉(zhuǎn)換,整數(shù)部分轉(zhuǎn)換可采用基數(shù)除法來實現(xiàn),小數(shù)部分轉(zhuǎn)換可采用基數(shù)乘法來實現(xiàn)。八進制和十六進制也是C語言中經(jīng)常表示數(shù)據(jù)的進制,因為它們與二進制之間的轉(zhuǎn)換非常方便,但要注意他們不是計算機中使用的進制。

            14、機器數(shù)的表示形式有原碼、反碼和補碼幾種形式,計算機中通常使用補碼的形式來表示一個數(shù),因為補碼運算可以連同符號位一起參與運算,這便于運算器的設計與實現(xiàn)。

              為你推薦