C語言 函式篇

2021-10-19 05:31:52 字數 4232 閱讀 8661

函式的定義通常包括:

返回值型別 函式名(形參表說明)

/*函式首部*/

說明:

(1)返回值型別:即函式返回值

函式返回值不能是陣列,也不能是函式,除此之外任何合法的資料型別都可以是函式的型別,如:int,long,float,char等。函式型別可以省略,當不指明函式型別時,系統預設的是整型。 返回值的型別。

(2)函式名:使用者自定義的識別符號,在 c 語言函式定義中不可省略(須符合c語言對識別符號的規範,用於標識函式,並用該識別符號呼叫函式)另外函式名本身也有值,它代表了該函式的入口位址,使用指標 呼叫函式時,將用到此功能。

(3)形參:形參表是用逗號分隔的一組變數說明,包括形參的型別形參的標識 符,其作用是指出每乙個形參的型別和形參的名稱,當呼叫函式時,接收來自主調函式資料,確定各參 數的值。

(4)函式體:用括起來的部分是函式的主體。函式內部應有自己的說明語句和執行語句,但函式內定義的變數不可以與形參同名

什麼叫做函式呼叫:就是執行函式,比如

printf

("%d"

,a);

就是執行了c內建的printf()函式,

c語言中函式呼叫的一般形式為:

函式名(型別 形參,型別 形參...

..);

【注意】形參和實參

(1) 實參(argument),全名為」實際引數「,實參可以是常數(a=2)、變數(x)、表示式(max(x+y))、函式(printf("%d",max(a)))等在進行函式呼叫時,它們都必須具有確定的值, 以便把這些值傳送給形參。 因此應預先用賦值,輸入等辦法使實參獲得確定值。

(2) 形參(parameter),全程為「形式引數」,它不是實際存在變數,是在定義函式名和函式體的時候使用的引數,目的是用來接收呼叫該函式時傳入的引數.在呼叫函式時,實參將賦值給形參。因而,必須注意實參的個數,型別應與形參一一對應,並且實參必須要有確定的值。

c語言呼叫函式的方法:

函式表示式:函式(如printf())作為表示式中的一項出現在表示式中,以函式的返回值參與函式的運算。所以這種方法需要函式有返回值。

z=

max(x,y)

;/*max()函式需要有返回值,給變數z賦值。*/

函式語句:函式呼叫的一般形式(函式名(型別 形參,型別 形參…))加上分號:

printf (

"%d"

,a);

scanf (

"%d"

,&b)

;

函式實參:函式作為另乙個函式呼叫的實際引數出現。同理,這種情況下被調函式必須要有返回值。

printf

("%d"

,max

(x,y));

/*把 max 呼叫的返回值作為 printf 函式的實參*/

在主調函式中呼叫某函式之前應對該被調函式進行宣告

宣告是什麼?

什麼是定義,什麼是宣告:

(一)定義:定義就是建立乙個物件,分配一塊記憶體,並且賦予乙個代號,即物件名或者變數名。

定義出來的物件有以下特點:

和所分配的記憶體死死連在一塊,記憶體位址和變數名字都不可以改變

乙個物件或者變數,在乙個區域內(全域性,檔案,函式,迴圈等)只能被定義一次,如果定義多次,編譯器會提示你重複定義同乙個變數或物件。

宣告的一般形式:

型別說明符 被調函式名(型別 形參,型別 形參...

);

在c語言中,變數就是對程式中資料所佔記憶體空間的一種抽象定義。

使用者在定義變數時會定義變數的名字、型別等變數的操作屬性。

系統可以根據變數名訪問變數,關鍵在於變數名確定了變數在系統記憶體中的位置,在計算機中,儲存變數當前值的儲存單元有兩類:

記憶體cpu 的寄存 器

而變數的儲存型別關係到變數的儲存位置,c 語言中定義了 4 種儲存屬性:

自動變數

外部變數

靜態變數

暫存器變數(它關係到變數在記憶體中的存放位置, 由此決定了變數的保留時間和變數的作用範圍)

【注】:

變數的保留時間又稱為生存期,從時間的角度,可將變數分為:

靜態儲存:指變數儲存在記憶體的靜態儲存區,在編譯時就分配了儲存空間,在整個程式的執行期間,該變數占有固定的儲存單元,程式結束後,這部分空間才釋放,變數的值在整個程式中始終存在;

動態儲存:指變數儲存在記憶體的動態儲存區,在程式的執行過程中,只有當變數所在的函式被呼叫時,編譯系統才臨時為該變數分配一段記憶體單元,函式呼叫結束,該變數空間釋放,變數的值只在函式呼叫期存在

變數的作用範圍又稱為作用域,從空間角度,可以將變數分為

全域性變數:指全域性變數是**在函式之外定義的變數****,其作用範圍為從定義處開始到本檔案結束,**編 譯時,編譯系統為其分配固定的記憶體單元(即靜態儲存),在程式執行的自始至終都占用固定單元

區域性變數:指在一 個函式或復合語句內定義的變數,它僅在函式或復合語句內有效,編譯時,編譯系統不為區域性變數分配內 存單元,而是在程式執行過程中,當區域性變數所在的函式被呼叫時(即動態儲存),編譯系統根據需要,臨時分配記憶體, 呼叫結束,空間釋放。

什麼是自動變數:

函式中的區域性變數,如不專門宣告為 static 儲存類別,都是動態地分配儲存空間的,資料儲存在動態 儲存區中。

函式中的形參和在**函式中定義的變數(**包括在復合語句中定義的變數)都屬此類,【在呼叫該函式時系統會給它們分配儲存空間,在函式呼叫結束時就自動釋放這些儲存空間】。這類區域性變數稱為自動變數。

自動變數用關鍵字 auto進行儲存類別的宣告,例如宣告乙個自動變數:

int

fun(

int a)

a 是函式 fun()的形參,b、c 是自動變數,並對 c 賦初值 3。執行完 fun()函式後,自動釋放 a、b、c 所佔的儲存單元。

什麼是外部變數:

外部變數(即全域性變數)是在函式的外部定義的,它的作用域為從變數定義處開始,到本程式檔案的末尾

如果外部變數不在檔案的開頭定義,其有效的作用範圍只限於定義處到檔案末尾

如果在定義點之前的函式想引用該外部變數,則應該在引用之前用關鍵字 extern對該變數進行「外部變數宣告」。表示該變數是乙個已經定義的外部變數。有了此宣告,就可以從「宣告」處起,合法地使用該外部變數.

用 extern 宣告外部變數,擴充套件程式檔案中的作用域.

有時希望函式中的區域性變數的值在函式呼叫結束後不消失而保留原值,這時就應該指定區域性變數為靜態區域性變數,用關鍵字 static 進行宣告。

為提高效率,c 語言允許將區域性變數的值存放在 cpu 的暫存器中,這種變數叫做暫存器變數,用關鍵字 register宣告。使用暫存器變數需要注意以下幾點:

(1)只有區域性自動變數和形式引數可以作為暫存器變數。

(2)乙個計算機系統中的暫存器數目有限,不能定義任意多個暫存器變數。

(3)不能使用取位址運算子「&」求暫存器變數的位址

C語言之函式篇

函式 function 是用於完成特定任務的程式 的自包含單元。為什麼要使用函式?第一,函式的使用可以省去重複 的編寫。如果程式中需要多次使用某種特定的功能,那麼只需編寫乙個合適的函式即可。第二,即使某種功能在程式中只使用一次,將其以函式的形式實現也是有必要的,因為這使程式更加模組化,從而有利於程式...

C語言函式篇(一)

int puts const char s s可以是字元指標變數名 字元陣列名,或者直接是乙個字串常量。功能是將字串輸出到螢幕。輸出時只有遇到 0 也就是字串結束標誌符才會停止。puts 輸出更簡潔 更方便。而且使用 puts 函式連換行符 n 都省了,使用 puts 顯示字串時,系統會自動在其後新...

C語言學習 函式篇

函式需要前置,因為系統會預設主函式先執行。為什麼使用函式 避免重複性操作。提高程式可讀性,方便後期修改和完善。有利於程式的模組化。函式類似於乙個黑盒子,有時候不需要知道裡面你怎麼執行的,知道如何用就好了。函式形參用完之後記憶體空間會被釋放,void表示沒有返回值。函式是c語言的基本單位。什麼是函式 ...