1、函式把大的任務分解為小的任務,有很多小的任務不需要了解具體操作細節。
2、如果函式定義中省略了返回值型別,則預設為int型別。程式可以看成是變數定義和函式定義的集合。函式之間的通訊可以通過引數,函式返回值以及外部變數進行,函式在原始檔**現的次序可以是任意的。只要保證每個函式不被分離到多個檔案中,源程式就可以分為多個檔案。
被呼叫函式通過return向呼叫者返回值,後面可以跟任何表示式。
3、返回非整型值的函式,比如很多數值函式返回的是double型別的值,某些專用函式則返回其他型別的值。
4、外部變數,c語言不允許在乙個函式中定義其他函式,因此函式本身都是外部的,預設情況下,外部變數與函式具有下列性質:通過乙個名字對所有外部變數的所有引用實際上都是引用同乙個物件。由於外部變數可以全域性引用,所以提供了一種可以代替函式引數和返回值的方式。
5、作用域規則,研究變數的作用範圍和時間
main(){}
intdouble
void push()
double pop()
對以上這些函式,push和pop不需要進行宣告就可以通過名字訪問變數,兩個變數名卻不能用在main函式中。
在外部變數的定義前使用該變數,或者外部變數的定義與變數的使用不在同乙個原始檔中,則必須在相應的變數宣告中強制性使用關鍵字 extern
6、外部變數的宣告與定義嚴格區分,宣告用於說明屬性,定義會引起儲存器分配。extern很重要。
7、標頭檔案,用來存放程式的共享部分,要精心組織標頭檔案。
8、靜態變數:static可用於申明內部變數,這種內部變數和區域性變數一樣,都只能在函式內部使用,不管函式是否被呼叫,它一直存在,而不像自動變數那樣,隨著鎖在函式的被呼叫和退出存在和消失。
9、暫存器變數:register宣告會告訴編譯器,她宣告的這個變數使用頻率很高,他的思想是存放在暫存器中可以使程式更小,速度更快,編譯器可以忽略此選項。register只適用於自動變數以及函式的形式引數。
10、初始化,如果不做顯式初始化,那麼外部變數和靜態變數都會被初始化為0,自動變數和暫存器變數的初值沒有定義。
11、遞迴:c語言中的函式可以遞迴呼叫,即函式可以直接或者間接呼叫自身。遞迴思想非常重要。
12、c預處理器,不用理解的太深,就是先執行標頭檔案,把要宣告的要定義的包含程序式裡面。
13、巨集替換就是說#define 名字 替換文字 後面用的時候就知道這個數字或者東西代表啥了,方便理解。而且替換文字可以是任意的,比如 #define forever for(;;)為無限迴圈定義了新名字forever。
14、巨集定義還可以帶引數#define max(a,b) ((a)>(b)?(a):(b))相當於
x=max(p+q,r+s)
x=((p+q)>(r+s)?(p+q):(r+s));
巨集呼叫直接把替換文字插到**中。換a換b
15、使用#undef可以取消名字的巨集定義,可以保證後續函式的呼叫是函式呼叫,不是巨集呼叫。
16、條件包含,防止乙個標頭檔案被呼叫多次,造成**的冗餘。例如:#ifndef hdr #define hdr #endif
《c程式語言》讀書筆記
舉例如下 char a 10 1 定義的時候直接用字串賦值 char a 10 hello 注意 不能先定義再給它賦值,如 char a 10 a 10 hello 這樣是錯誤的!2 對陣列中字元逐個賦值 char a 10 3 利用strcpy char a 10 strcpy a,hello 易...
《C程式語言》 讀書筆記
在mac下可以使用sublime進行c語言程式編寫,然後通過命令列來執行c程式。在sublime新建乙個c程式,譬如 test.c include main 然後在命令列中執行 cc test.c編譯後會自動生成乙個a.out檔案,然後我們執行a.out檔案 test.c就會在命令行內列印出 hel...
C 程式語言讀書筆記 C7 函式
1.乙個函式的定義也就是乙個給出了函式體的函式宣告 2.inline描述符並不影響函式的語義 3.如果一區域性變數被宣告為static,那麼將只有乙個靜態分配的物件,它被用於在該函式的所有呼叫中表示這個變數。這個物件將只在執行執行緒第一次到達它的定義時初始化。4.將指標引數宣告為const,也就是告...