首先,什麼是函式?函式(fimction)是用於完成特定任務的程式**的自包含單元。儘管c中的函式和 其他語言中的函式、子程式或子過程等扮演著相同的角色,但是在細節上會有所不同。某些函式會導致執行 某些動作,比如primf()可使資料呈現在螢幕上;還有一些函式能返回乙個值以供程式使用,如strlen () 將指定字串的長度傳遞給程式。一般來講,乙個函式可同時具備以上兩種功能。
為什麼使用函式?第一,函式的使用可以省去重複**的編寫。如果程式中需要多次使用某種特定的 功能,那麼只需編寫乙個合適的函式即可。程式可以在任何需要的地方呼叫該函式,並且同乙個函式可以 在不同的程式中呼叫,就像在許多程式中需要使用putchar ()函式一樣。第二,即使某種功能在程式中只 使用一次,將其以函式的形式實現也是有必要的,因為函式使得程式更加模組化,從而有利於程式的閱讀、 修改和完善。
/* letheadl.c */關於這個程式有以下幾點需要注意:#include
#define name "gigathink, inc."
#define address "101 megabuck plaza"
#define place "megapolis* ca 94904"
#define width 40
void starbar (void); /* 宣告函式原型 */
int main (void)
void starbar (void) /* 定義函式 */
• starbar識別符號在不同位置被使用了 3次:函式原型(function prototype)告知編譯器starbar ()的 函式型別,函式呼叫(functioncall)導致該函式的執行,而函式定義(functiondefinition)則確切指定了該函式的具體功能。
•函式同變數一樣有多種型別。任何程式在使用函式之前都需要宣告該函式的型別。因此,下面這 個ansi c風格的原型出現在main ()函式的定義之前:
void starbar (void);
圓括號表明starbar是乙個函式名。第乙個void指的是函式型別:它的意思是該函式沒有返回值。 第二個void (位於圓括號內)表明該函式不接受任何引數。分號的作用是表示該語句是進行函式 宣告而不是函式定義◊也就是說,這一行宣告了程式將使用乙個名為starbar()且函式型別為void 的函式,同時通知編譯器需要在其他位置找到該函式的定義。對於不識別ansi c原型的編譯器, 只需宣告函式的型別,就像下面這樣: void starbar ();
•程式在main ()中通過使用函式名後跟圓括號和分號的格式呼叫函式starbar (),語句如下: starbar ();這是void型別函式的一般呼叫形式。當計算機執行到starbar ():語句時,它找到starbar ()函 數並執行其中的指令。執行完starbar ()中的**後,計算機返回到呼叫函式(calling function) 的下一行繼續執行。在本例中,呼叫函式是main ()。如果把starbar ()看作乙個黑盒子,那麼它的執行結果是列印出一行星號。因為不需要來自呼叫函式 的任何資訊,所以它沒有輸入引數。同時它不向main ()提供(返回)任何資訊,因此starbar ()也沒有返回值。簡言之,starbar ()不需要同呼叫函式進行任何通訊。*程式中starbar ()和main ()具有相同的定義格式,即首先以型別、名稱和圓括號開始,接著是開始花 括號、變數宣告、函式語句定義以及結束花括號。注意此處的starbar ()後沒有分號,這告訴編譯器您是在定義函式starbar (),而不是 在呼叫它或宣告它的原型。
•程式把starbar ()和main ()包含在同乙個檔案中,您也可以將它們放在不同的兩個檔案之中。單檔案形式比較容易編譯,而使用兩個檔案則有利於在不同的 程式中使用相同的函式。如果您把函式寫在了另外一 個單獨的檔案中,則在那個檔案中必須加入#define 和#include指令。在後續內容中我們將講述兩個或多個檔案的使用。就目前而言,我們將所有函式都包含在乙個檔案中。main ()的結束花括號告訴編譯器該函式在這裡結束,後面的starbar ()函式頭表示staibar ()是乙個函式。
• starbar ()中的變數count是乙個區域性(local)變數。這意味著該變數只在starbar ()中可用。即使您在其他函式(包括main ()函式)中使用名稱count,也不會出現任何衝突,您將得到具有同一名稱的多個單獨的、互不相關的變數。
C Primer Plus學習 三十六 暫存器變數
通常,變數儲存在計算機記憶體中。如果幸運,暫存器變數可以被儲存在cpu暫存器中,或更一般地,儲存在速度最快的可用記憶體中,從而可以比普通變數更快地被訪問和操作。因為暫存器變數多是存放在乙個暫存器而非記憶體中,所以無法獲得暫存器變童的位址。但在其他的許多方面,暫存器變數與自動變數是 一樣的。也就是說,...
C Primer Plus 第十六章筆記
一 string類 1.建構函式 注 npos為字串的最大長度 nbts表示以空字元結尾的字串 2.輸入 3.使用字串 1 可以運用關係運算子比較字串。2 size 和length 成員函式返回字串的字元數。3 搜尋字串或字元 4 capacity 返回當前分配給字串的記憶體塊的大小 reverse...
c primer plus學習筆記
1.變數名命名規則 重要的 1 有含義 2 只能用字母字元 數字和下劃線 3 第乙個字元不能是數字 4 區分大小寫 5 不能用c 關鍵字 2.整型 1 無符合型別不能表負值 2 char short 16 int short long 32,int 和longlong 64,long c 11 寬度...