自定義函式的一般形式:
注意:自定義乙個
包含的內容可以省略,資料型別說明省略,預設是
int
型別函式;函式名稱遵循識別符號命名規範;
自定義函式盡量放在
main
函式之前。如果要放在main
函式後面的話,需要在main
函式之前先宣告自定義函式,宣告格式為:[資料型別說明] 函式名稱([引數]);
sayhello()
函式,示例**:
int sayhello()
注意:例如:計算n的階乘可以使用以下**:
void
函式中可以有執行**塊,但是不能有返回值。另
void
函式中如果有return
語句,該語句只能起到結束函式執行的功能,其格式為:return;
遞迴函式特點:c 語言根據變數的生存週期來劃分,可以分為靜態儲存方式和動態儲存方式。每一級函式呼叫時都有自己的變數,但是函式**並不會得到複製;
每次呼叫都會有一次返回,如計算5的階乘時每遞推一次都返回進行下一次;
遞迴函式中,位於遞迴呼叫前的語句和各級被呼叫函式具有相同的執行順序;
遞迴函式中,位於遞迴呼叫後的語句的執行順序和各個被呼叫函式的順序相反;
遞迴函式中必須有終止語句。
一句話總結遞迴:自我呼叫且有完成狀態。
靜態儲存方式:是指在程式執行期間分配固定的儲存空間的方式。靜態儲存區中存放了在整個程式執行過程中都存在的變數,如全域性變數。動態儲存方式:是指在程式執行期間根據需要進行動態的分配儲存空間的方式。動態儲存區中存放的變數是根據程式執行的需要而建立和釋放的,通常包括:函式形式引數;自動變數;函式呼叫時的現場保護和返回位址等。
c 語言中儲存類別又分為四類:自動(auto)、靜態(static)、暫存器的(register)和外部的(extern)。
用關鍵字auto
定義的變數為自動變數,auto
可以省略,auto
不寫則隱含定為「自動儲存類別」,屬於動態儲存方式。
用static
修飾的為靜態變數,如果定義在函式內部的,稱之為靜態區域性變數;如果定義在函式外部,稱之為靜態外部變數。
為了提高效率,c 語言允許將區域性變數得值放在 cpu 中的暫存器中,這種變數叫「暫存器變數」,用關鍵字register
宣告。
用extern
宣告的的變數是外部變數,外部變數的意義是某函式可以呼叫在該函式之後定義的變數。
注意:c 語言中不能被其他原始檔呼叫的函式稱謂內部函式,內部函式由靜態區域性變數屬於靜態儲存類別,在靜態儲存區內分配儲存單元,在程式整個執行期間都不釋放;靜態區域性變數在編譯時賦初值,即只賦初值一次;如果在定義區域性變數時不賦初值的話,則對靜態區域性變數來說,編譯時自動賦初值0(對數值型變數)或空字元(對字元變數)。
只有區域性自動變數和形式引數可以作為暫存器變數。乙個計算機系統中的暫存器數目有限,不能定義任意多個暫存器變數;區域性靜態變數不能定義為暫存器變數。
static
關鍵字來定義,因此又被稱謂靜態函式,形式為:
static [資料型別] 函式名([引數])
這裡的static
是對函式的 作用範圍 的乙個限定,限定該函式只能在其所處的原始檔中使用,因此在不同檔案中出現相同的函式名稱的內部函式是沒有問題的。
c 語言中能被其他原始檔呼叫的函式稱謂外部函式 ,外部函式由extern
關鍵字來定義,形式為:
extern [資料型別] 函式名([引數])
c 語言規定,在沒有指定函式的作用範圍時,系統會預設認為是外部函式,因此當需要定義外部函式時extern
也可以省略。
陣列在程式中是一塊連續的,大小固定並且裡面的資料型別一致的記憶體空間。
c 語言中陣列初始化有三種形式,分別是:
1. 資料型別 陣列名稱[長度n] = ;
2. 資料型別 陣列名稱 = ;
3. 資料型別 陣列名稱[長度n];
陣列名稱[0] = 元素1;
陣列名稱[1] = 元素2;
陣列名稱[n] = 元素n+1;
注意:陣列的下標均以0開始;
陣列在初始化的時候,陣列內元素的個數不能大於宣告的陣列長度;
如果採用第一種初始化方式,元素個數小於陣列的長度時,多餘的陣列元素初始化為0;
在宣告陣列後沒有進行初始化的時候,靜態(static)和外部(extern)型別的陣列元素初始化元素為0,自動(auto)型別的陣列的元素初始化值不確定。
注意:例如:中的長度是可以省略不寫的;
採用第2種方式的時候最後乙個元素必須是』\0』,』\0』表示字串的結束標誌;
採用第2種方式的時候在陣列中不能寫中文。
int num[3][3] = , , };
我們可以把上面的陣列看作乙個3×3的矩陣,如下圖:
注意:多維陣列的每一維下標均不能越界。
c 語言入門
C語言基礎三
預處理指令 以 號開頭,可以寫在任何位置,在編譯之前執行 巨集定義檔案包含 條件編譯 一 巨集定義 無引數 有引數 num叫做巨集名,6是用來替換巨集名的字串 define num 10 條件一般需要用到巨集定義 if 條件1 不可以放變數 code1。如果條件1成立,則把code1編譯程序式 el...
c語言基礎(三)
位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。分別為 按位與 如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0 按位或 兩個相應...
C語言基礎(三)
指標 不論什麼指標型別,指標的大小總是由機器位數決定,例如32位客戶端指標占用4個位元組 取位址 在定義時表示指標變數,在用時表示取值p p指向的位址 p p指向的位址值 int p p 3 上述會出現段錯誤,修改了未定義的記憶體,指標指向不明 p 與 p p的區別?p 指p指向內容,然後內容 1 ...