C語言

當前位置 /首頁/計算機/C語言/列表

如何快速掌握C語言函式

C源程式是由函式組成的。最簡單的程式有一個主函式 main(),但實用程式往往由多個函式組成,由 主函式呼叫其他函式,其他函式也可以互相呼叫。函式是C源程式的基本模組,程式的許多功能是通過對 函式模組的呼叫來實現的,學會編寫和呼叫函式可以提高程式設計效率。下面是小編為大家帶來的如何快速掌握C語言函式的知識,歡迎閱讀

如何快速掌握C語言函式

  1、函式的定義

C源程式是由函式組成的。最簡單的程式有一個主函式 main(),但實用程式往往由多個函式組成,由 主函式呼叫其他函式,其他函式也可以互相呼叫。函式是C源程式的基本模組,程式的許多功能是通過對 函式模組的呼叫來實現的,學會編寫和呼叫函式可以提高程式設計效率。

函式的定義通常包含以下內容:

型別 函式名(形參表說明) /*函式首部*/

{

說明語句 /*函式體*/

執行語句

}

對上面的定義形式進行以下說明:

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

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

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

(4)用{ }括起來的部分是函式的主體,稱為函式體。函式體是一段程式,確定該函式應完成的規定的 運算,應執行的規定的動作,集中體現了函式的功能。函式內部應有自己的說明語句和執行語句,但函式 內定義的變數不可以與形參同名。花括號{ }是不可以省略的。

根據函式定義的.一般形式,可以定義一個最簡單的函式:

add()

{

;

}

這是 C 語言中一個合法的函式,函式名為 add。它沒有函式型別說明,也沒有形參表,同時函式體內 也沒有語句。實際上函式 add 不執行任何操作和運算,它是一個空函式,在一般情況下是沒有用途的,但 在程式開發的過程中有時是需要的,常用來代替尚未開發完畢的函式。

  2、函式的呼叫

主調函式使用被調函式的功能,稱為函式呼叫。在 C 語言中,只有在函式呼叫時,函式體中定義的功 能才會被執行。C語言中,函式呼叫的一般形式為:

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

對無參函式呼叫時則無實際引數表。實際引數表中的引數可以是常數、變數或其他構造型別資料及表 達式,各實參之間用逗號分隔。

在C語言中,可以用以下幾種方式呼叫函式。

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

z=max(x,y);是一個賦值表示式,把 max 的返回值賦予變數 z。

(2)函式語句:函式呼叫的一般形式加上分號即構成函式語句。

例如:

printf ("%d",a);

scanf ("%d",&b);

都是以函式語句的方式呼叫函式。

(3)函式實參:函式作為另一個函式呼叫的實際引數出現。這種情況是把該函式的返回值作為實參進 行傳送,因此要求該函式必須是有返回值的。例如:

1printf("%d",max(x,y)); /*把 max 呼叫的返回值作為 printf 函式的實參*/

在主調函式中呼叫某函式之前應對該被調函式進行宣告。在主調函式中對被調函式進行說明的目的是

使編譯系統知道被調函式返回值的型別,以便在主調函式中按此種類型對返回值進行相應的處理。其一般

形式為:

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

需要注意的是,函式的宣告和函式的定義有本質上的不同。主要區別在以下兩個方面:

(1)函式的定義是編寫一段程式,應有函式的具體功能語句——函式體;而函式的宣告僅是向編譯系 統的一個說明,不含具體的執行動作。

(2)在程式中,函式的定義只能有一次,而函式的宣告可以有多次。

  3、變數的儲存型別

在 C 語言中,變數是對程式中資料所佔記憶體空間的一種抽象定義,定義變數時,使用者定義變數的名、 變數的型別,這些都是變數的操作屬性。不僅可以通過變數名訪問該變數,系統還通過該識別符號確定變數 在記憶體中的位置。在計算機中,儲存變數當前值的儲存單元有兩類,一類是記憶體,另一類是 CPU 的寄存 器。變數的儲存型別關係到變數的儲存位置,C 語言中定義了 4 種儲存屬性,即自動變數、外部變數、靜 態變數和暫存器變數,它關係到變數在記憶體中的存放位置, 由此決定了變數的保留時間和變數的作用範圍。

變數的保留時間又稱為生存期,從時間的角度,可將變數分為靜態儲存和動態儲存兩種情況。靜態存 儲是指變數儲存在記憶體的靜態儲存區,在編譯時就分配了儲存空間,在整個程式的執行期間,該變數佔有 固定的儲存單元,程式結束後,這部分空間才釋放,變數的值在整個程式中始終存在;動態儲存是指變數 儲存在記憶體的動態儲存區,在程式的執行過程中,只有當變數所在的函式被呼叫時,編譯系統才臨時為該 變數分配一段記憶體單元,函式呼叫結束,該變數空間釋放,變數的值只在函式呼叫期存在。

變數的作用範圍又稱為作用域,從空間角度,可以將變數分為全域性變數和區域性變數。區域性變數是在一 個函式或複合語句內定義的變數,它僅在函式或複合語句內有效,編譯時,編譯系統不為區域性變數分配內 存單元,而是在程式執行過程中,當局部變數所在的函式被呼叫時,編譯系統根據需要,臨時分配記憶體, 呼叫結束,空間釋放;全域性變數是在函式之外定義的變數,其作用範圍為從定義處開始到本檔案結束,編 譯時,編譯系統為其分配固定的記憶體單元,在程式執行的自始至終都佔用固定單元。

  1. 自動變數

函式中的區域性變數,如不專門宣告為 static 儲存類別,都是動態地分配儲存空間的,資料儲存在動態 儲存區中。函式中的形參和在函式中定義的變數(包括在複合語句中定義的變數)都屬此類,在呼叫該函 數時系統會給它們分配儲存空間,在函式呼叫結束時就自動釋放這些儲存空間。這類區域性變數稱為自動變 量。自動變數用關鍵字 auto 進行儲存類別的宣告,例如宣告一個自動變數:

int fun(int a)

{

auto int b,c=3; /*定義 b,c 為自動變數*/

}

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

  2. 外部變數

外部變數(即全域性變數)是在函式的外部定義的,它的作用域為從變數定義處開始,到本程式檔案的末尾。如果外部變數不在檔案的開頭定義,其有效的作用範圍只限於定義處到檔案末尾。如果在定義點之前的函式想引用該外部變數,則應該在引用之前用關鍵字 extern 對該變數進行“外部變數宣告”。表示該 變數是一個已經定義的外部變數。有了此宣告,就可以從“宣告”處起,合法地使用該外部變數.

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

  3. 靜態變數

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

  4. 暫存器變數

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

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

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

(3)不能使用取地址運算子“&”求暫存器變數的地址。

TAG標籤:函式 語言 #