C語言基礎 函式

2021-07-10 21:34:03 字數 1861 閱讀 7760

一、函式(掌握)

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...