詳解C語言之函式

2022-09-21 21:36:18 字數 1613 閱讀 8979

目錄

sum(); //函式語句呼叫

程式設計客棧result = **erage * sum(a); //函式表示式呼叫

此時函式名出現在表示式中,其返回值將作為表示式的算數參與計算。

result = sum(sum1(a)); //函式引數呼叫

此時函式名出現在另乙個函式的引數中,其返回值將作為實參賦值給外函式的形參。

首先在c語言中不允許函式巢狀定義,也就是不許在乙個函式內定義乙個新函式。

但是c語言允許函式巢狀呼叫。

void a()

void b()

c語言的函式都支援遞迴,也就是說,每個函式都可以直接或間接地呼叫自己。

遞迴實現的原因是函式的每個執行過程在棧中都有自己的形參和區域性變數的副本,這些副本相對獨立。

假定某個函式呼叫了乙個被呼叫的函式,再假定被呼叫的函式反過來呼叫了呼叫函式,那麼第二個函式就稱為呼叫函式的遞迴。

使用函式的遞迴需要兩個先決條件,即遞推關係和結束條件。

寫個簡單的函式遞迴:

#include

void number(int a)

else }

int main()

函式是c語言程式中的最程式設計客棧小實現單位,我們可以把乙個函式或者多個函式儲存為乙個檔案,這個檔案被稱為原始檔。

我們在定義乙個函式後,該函式便可被其他函式所呼叫。

但當乙個源程式由多個原始檔組成時,我們可以指定函式不能被其他檔案呼叫,這時c語言的函式便分為兩大類,內部函式與外部函式。

當某乙個函式只能被其所在原始檔呼叫時,他便被稱為內部函式,也叫做靜態函式。

當乙個函式是內部函式時,他便只侷限與其所在原始檔中,其他原始檔就可以有同名函式,並且他們之間互不干擾。

static關鍵字可以將原來的函式修飾成普通函式。

static 返回值型別 函式名(引數列表)

static int number(int a)

與內部函式相反,外部函式是可以被其他原始檔呼叫的。

外部函式使用extern關鍵字進行修飾。

一般來說,定義函式時如果沒有使用extern關鍵字,則將預設該函式為預設函式,換言之,extern可以省略。

extern 返回值型別 函式名(引數列表)

extern in number(int a)

「作用域」:他決定了程式中哪些語句可用哪些不可用,換言之,就是程式的可見性。作用域包括區域性作用域和全域性作用域。

區域性變數具有區域性作用域,全域性變數具有全域性作用域。

在乙個函式內定義的變數稱為區域性變數,我們使用的大多數變數都程式設計客棧是區域性變數,這些變數的宣告在函式內部,無法被其他函式使用。

函式的形式引數也屬於區域性變數,只作用於函式內的所有語句塊。

一般來說,乙個區域性變數的作用域可以由包含該變數的一對大括號所決定。

與區域性變數相對,在函式外部進行宣告定義的變數,稱為全域性變數。

全域性變數不屬於某乙個函式,而屬於整個原始檔。如果要在其他檔案中使用該變數,則需先用extern關鍵字進行引用修飾。

全域性變數的作用是增加函式間資料聯絡的通道。如果在乙個函式中改變了全域性變數的值,就能影響到其他函式,這便打通了不同函式之間的通道。

本文標題: 詳解c語言之函式

本文位址: /ruanjian/c/437313.html

c語言之memset函式詳解

功 能 將s所指向的某一塊記憶體中的每個位元組的內容全部設定為ch指定的ascii值,塊的大小由第三個引數指定,這個函式通常為新申請的記憶體做初始化工作 用 法 void memset void s,char ch,unsigned n 程式例 include include include int...

C語言之函式

1.前導程式 2.函式概述 1 列印乙個信頭 2 include3 include 4 define name gigathink,inc.5 define address 101 megabuck plaza 6 define place megapolis,ca 94904 7 define w...

C語言之函式

函式是c語言學習中乙個重要的部分,可以說在開始學習c語言的時候懂得了函式的相關知識對學習c語言很重要特別是有信心上的幫助。下面寫乙個函式的例子,include int foo int num1,int num2 int main 在主函式中有三個臨時變數a,b,c。a和b已知,c被賦予以a和b為引數...