c語言理論學習筆記之序言 K R

2022-05-14 20:07:27 字數 2468 閱讀 1365

時光荏苒,不知不覺已畢業2時間有餘,雖然從事技術行業,但是在工作中時常發覺自己的專業技術知識是捉襟見肘,這個對於乙個技術開發者著實有點尷尬。反思之餘,著實覺得還得從根基下手。c/c++作為高階語言中"最低階"的語言,根基當然是從這裡下手咯。於是,我決定從k&r的c語言程式設計開始。。。

序言。也就是c語言程式設計的入門知識。此章c語言的基礎知識進行了乙個概述:

首先是程式的基本語法結構,包含程式的各個組成部分的註解。最重要是的莫過於#include,它的意思是告訴編譯器本程式中包含標準輸入/輸出庫的資訊。也就是引用了乙個函式庫,這個函式庫內包含了很多現成的方法,我們如果要使用這些方法,只需簡單的把這個函式庫用#include引入即可,以此類推,其他的函式庫也是如此。所提供的printf()/scanf()函式對我們非常的重要,以後的程式除錯工作基本上全靠這個函式。

變數與演算法運算。此章進一步向我們展示了c語言中的其他成員,如注釋、宣告、變數迴圈以及格式化輸出等。這讓一些初學者從整體來把握c語言程式。此章最重要的是告訴讀者c語言的一些資料型別,即:char、int、float、double。其中int可分為short int、int、long int,如果按範圍可再分為signed和unsigned(有符號和無符號)。float、double也可按上述分類。

這裡還介紹了printf()函式的具體功能,即為輸出格式化。該函式的第乙個引數是待列印的字串,其中字串中的百分號(%)代表它的每乙個引數要替換的位置,其中%d按照十進位制整形列印,%s列印乙個字串,%f按照浮點數列印,這裡也可以更進一步指定其位數,如%3.4f即為列印的數至少佔3個字元寬,小數後面有4位數字。scanf()函式則是獲取從鍵盤輸入的字元。%%,左邊的%表示轉義,表示%本身。

符號常量即用#include來定義乙個特定的字串,以便在程式中很方便的使用,這樣處理還可以讓我們的**更加的易讀和直觀。如:#define maxlength 100 定義了乙個最大長度的上限。

字元輸入/輸入。標準庫提供的一次讀/寫乙個字元的函式即為getchar()和putchar()。putchar()函式的主要應用則是從文字流中讀入下乙個輸入字元,並將其作為結果返回,處理文字時尤為有用,可用於處理文字複製、字元計數、行計數以及單詞計數等。

陣列。乙個非常實用的東東,此章則是通過乙個簡單的例子展示了陣列的部分功能。要記住,在c語言中陣列下標總是從0開始,陣列下標可以是任何整形表示式,包括整形變數和常量。

if (c >= '0' && c<= '9') 判定該字元是否為數字,如果是數字則其對應的數值為c - '0'。對於字母也是一樣的,如果要乙個字元是否是字母則可寫:if ((c >= 'a' && c <= 'z') || (c >= 'a' && c <= 'z'))。

函式。為了便於計算而封裝的乙個方法,這樣做還可以使程式更加的清晰易讀。要使用乙個函式首先得宣告即為函式原型,然後在main()函式的下方進行定義,函式原型與函式定義中引數名不要求相同,而函式原型的引數是可選的,可只寫型別,不寫引數名稱。

引數-傳值呼叫。在c語言中所有的引數都是「通過值」傳遞的。也就是說,傳遞給被呼叫函式的引數值存放在臨時變數中,而不是存放到原來的變數中。此時被呼叫的函式不能直接修改主呼叫函式中變數的值,如果要修改則可把引數宣告為指標型別,從而可以間接的修改呼叫函式中的變數值。注意:陣列作為函式引數時,傳遞給函式的值是陣列起始元素的位置或位址----它並不是複製陣列元素本身。因此,在被呼叫函式中,可以通過陣列下標訪問或修改陣列元素的值。

字元陣列。此陣列是c語言中最常用的陣列型別。應掌握c語言中字元陣列的儲存規則,即字元陣列是以『\0』(空字元)為結束標誌。

外部變數與作用域。在函式內部定義的變數即為區域性變數,又稱自動變數,整個函式即為自動變數的作用域,在函式執行完畢時消失。在函式外部定義的變數即稱為外部變數,且只能定義一次。定義後編譯程式將為它分配儲存單元。在每個需要訪問外部變數的函式中,必須宣告相應的外部變數,此時說明其型別。宣告時可以使用extern語句顯示宣告,也可以通過上下文進行隱式宣告。通過上下文進行宣告是指在程式的最開始的地方定義變數,下面的函式即可不受限制的呼叫此外部變數。如果程式包含在多個原始檔中,而某個變數在file1檔案中定義,在file2和file3檔案中使用,那麼在檔案file2和file3中就需要使用extern宣告來建立該變數與其定義之間的聯絡。人們常把變數和函式的extern宣告放到乙個單獨的檔案(標頭檔案)中,並在每個原始檔的開頭使用#include語句把所要使用的標頭檔案包含進來,字尾.h約定為頭檔名的副檔名。

最後需要搞清楚「宣告(declaraton)」和「定義(define)」這兩個詞的區別:「宣告」指的是說明變數的性質,但並不分配儲存單元;「定義」表示建立變數或分配儲存單元。外部變數雖然訪問時很方便,但是且不可濫用,過分的依賴外部變數會導致一定的風險,因為它會使程式中的資料關係模糊不清----外部變數的值可能會被意外或不經意地修改,而程式的修改又變得十分困難。

到這裡,c語言的傳統核心部分知識已經看完了,收穫頗豐。最最重要的就是實踐,接下來就是一步乙個腳印地去編寫每乙個程式,按部就班的對每乙個程式都進行除錯。

本文純屬本人在學習c語言過程中的手記,如果有錯誤的地方,還請各位看客大大不吝賜教,感謝!!

猛擊這裡檢視序言習題答案及**示例

C 理論學習 列舉

列舉是一組命名整型常量,列舉型別是使用關鍵字enum來宣告的 c 中列舉是數值型資料,列舉包含自己的值,且不能繼承或傳遞繼承 一般將列舉宣告到命名空間下,類的外面,表示這個命名空間下,所有的類都可以訪問 public enum week public修飾符是enum預設的修飾符 可以不寫 預設下每個...

HDFS的理論學習筆記

hdfs的優點 1 高容錯性,hdfs預設有多個副本,及時伺服器壞了一台之後,會補全壞掉伺服器上面的副本,放到其他的沒有壞掉的伺服器上。2 可以構建在廉潔的機器上 hdfs的缺點 1 不適合低延遲資料量訪問 為什麼hdfs不支援修改呢?原因是hdfs儲存是按分塊的,修改了檔案的大小後,塊需要重新劃分...

ABP理論學習之Abp Session

返回總目錄 當應用程式要求使用者登入時,那麼應用程式也需要知道當前使用者正在執行的操作。雖然asp.net本身在展現層提供了session物件,但abp也提供了在任何需要獲得當前使用者和租戶的地方都可以使用的iabpsession介面。關於iabpsession 為了獲得實際的session資訊,必...