一、函式(掌握)
1、定義
是乙個實現某種功能的**塊。
【作用】1、實現**復用,減少冗餘**。
2、**維護方便。
暫停停止
快進快退
2、函式的分類
(1)main函式(每個c程式有且僅有乙個)
(2)庫函式
(3)自定義函式
3、函式的宣告、定義和使用(掌握)
(1)宣告
格式:返回值型別 函式名(形式引數列表); (函式三要素)
(2)定義
實現某種功能的**塊,又被稱作函式體。
(3)使用(呼叫)
格式:函式名(實際引數列表);
【注意】
(1)形參與函式體內的變數不能重名
(2)函式原型裡的形參,呼叫時使用的是實參,採用傳值的方式,將實參賦值給形參,但是具有單向傳遞的特點,只能通過實參傳給形參,不能通過形參再傳回給實參。
(3)return 的作用
返回乙個具體值或者空給函式呼叫者。
提前返回:
int func()
char username[20];
char password[20];
if(verify)
do sth…
else
//提示輸入使用者名稱密碼
return -1;
return 0;
(4)返回值
函式的返回值如果為某個型別,可以不返回這個型別的返回值,即返回值為空。c是乙個弱型別的語言,對於返回值沒有嚴格的要求,但是要求程式設計師,必須按照返回值的型別要求進行返回。
(5)不允許函式重名(函式過載)
(6)void
對於函式返回值的限定
對於函式引數的限定(代表函式引數列表為空)。
練習:1、封裝乙個函式,返回兩個整數中的最大值
int maxofnumber(int num1,int num2);
2、封裝乙個函式,判斷乙個字元是否大寫字母,如果是返回1,否則返回0
int ismyupper(char c);
【擴充套件】遞迴
(1)含義:函式可以通過呼叫自身來進行遞迴。
(2)作用:某些情況下使用遞迴來取代迴圈。
階乘n<=0 1
n>0: n*factorial(n-1)
【使用遞迴的方法】
(1)寫出臨界條件 (n是幾的時候不需要計算)
(2)找出這一次跟上一次的關係(1~n階乘就是1~n-1的階乘乘以n)。
(3)假設當前函式能夠使用,呼叫自身計算上一次的結果,再求出本次結果。
二、函式和棧空間(了解)
c程式的記憶體空間布局
1、正文段(**段):cpu執行指令的部分。
2、初始化資料段(data段):包含程式中需要賦初值的變數(c程式中的任意函式之外)。常量也存放在這裡
3、非初始化資料段(bss段):匯程式設計序的乙個操作符,意思:「block started by symbol」(由符號開始的塊)。
c程式中任意函式外的宣告:long l;
4、堆在此進行動態記憶體分配。
5、棧儲存函式內部的自動變數已及每次函式呼叫時所需要儲存的資訊。
int a;//auto int a;
對於函式來說,儲存:
(1)函式內部的自動變數(auto)
(2)函式的引數
(3)函式的返回值
三、變數的作用域(了解)
全域性變數:從變數宣告開始,到使用它的**塊結束(區域性變數不能與全域性變數同名,如果同名,就會被覆蓋),如果不使用全域性變數,作用範圍為整個工程。
區域性變數:從變數宣告開始,到使用它的**塊結束,如果說在這個作用域內,與前面的全域性變數同名,則會覆蓋全域性變數。
C語言基礎 函式
描述某乙個功能模組的過程 注 c語言是面向過程,即c語言的執行是以模組 函式 為單位的。return type function name parameter list 在 c 語言中,函式由乙個函式頭和乙個函式主體組成。下面列出乙個函式的所有組成部分 返回型別 乙個函式可以返回乙個值。return...
C語言基礎函式(二)
2 函式的呼叫 2.1 函式的簡單呼叫 turbo c2.0呼叫函式時直接使用函式名和實參的方法,也就是將要賦給被呼叫函式的參量,按該函式說明的引數形式傳遞過去,然後進入子函式執行,執行結束後再按 子函式規定的資料型別返回乙個值給呼叫函式。使用turbo c2.0的庫函式就是函式簡單呼叫的方法。舉例...
C語言基礎 scanf函式
本文介紹scanf函式的基本知識。這也是在stdio.h中宣告的乙個函式,因此使用前必須加入 include int age scanf d age scanf函式時,會等待使用者的鍵盤輸入,並不會往後執行 scanf的第1個引數是 d 說明要求使用者以10進製的形式輸入乙個整數。這裡要注意,sca...