C講課筆記 函式

2021-10-25 12:42:40 字數 2326 閱讀 8115

(三)課堂練習 - 計算階乘之和

三、引數傳遞

(二)位址傳遞

四、遞推演算法與遞迴演算法

宣告函式(只有函式頭:函式名、形式引數、返回值)

定義函式(包含函式頭和函式體)

呼叫函式(通過函式名加實際引數來呼叫)

/* 

功能:編寫函式求三個整數最大值

日期:2023年5月8日

*/#include

"stdio.h"

// 第1步:宣告函式

intmax

(int a,

int b,

int c)

;// a, b, c叫做形式引數,簡稱形參或虛參

void

main()

// 第2步:定義函式

當呼叫函式傳入的實際引數是常量、簡單變數或表示式,此時採用值傳遞的方式,也就是實際引數的值傳給形式引數後,不會受形式引數變化的影響。值傳遞是一種單向的資料傳遞。

當實際引數是常量或表示式的時候,值傳遞很好理解,只是把資料傳給形式引數就了事,不會接受形式引數變化的影響。因此,我們只演示實際引數是變數時的值傳遞。

/* 

功能:值傳遞演示

日期:2023年5月13日

*/#include

"stdio.h"

// 1、宣告函式

intchange

(int x)

;void

main()

// 2、定義函式

intchange

(int x)

當呼叫函式傳入的實際引數是陣列時,採用位址傳遞方式,也就是說形式引數(陣列)值發生變化,會反過來影響實際引數(陣列)。位址傳遞是一種雙向傳遞。

/* 

功能:位址傳遞演示

日期:2023年5月13日

*/#include

"stdio.h"

// 1、宣告函式

void

reverse

(int a,

int n)

;void

main()

;// 輸出部分

printf

("原序:");

for(i =

0; i <

10; i++

)printf

("\n");

// 處理部分

reverse

(b,10);

// 輸出部分

printf

("反序:");

for(i =

0; i <

10; i++)}

// 2、定義函式(功能:陣列反序)

void

reverse

(int a,

int n)

}

從已知向未知不斷拓展的思想方式。

從未知向已知不斷回歸的思想方式。

(1)採用遞推方式來計算 n!

起點:1! = 1

2! = 1! * 2

3! =2! * 3

……終點:n! = (n-1)! * n

(2)採用遞迴方式來計算 n!

起點:n! = (n-1)! * n

(n-1)! = (n-2)! * (n-1)

(n-2)! = (n-3)! * (n-2)

……終點: 1! = 1

/* 

功能:採用遞推和遞迴方式計算階乘

日期:2023年5月13日

*/#include

"stdio.h"

// 1、宣告函式

intjc_recurrence

(int n)

;int

jc_recursion

(int n)

;void

main()

// 2、定義函式

// 遞推方式計算階乘函式

intjc_recurrence

(int n)

return jc;

}// 遞迴方式計算階乘函式

intjc_recursion

(int n)

else

return jc;

}

C講課筆記 結構體

二 案例演示 二 使用指標指向結構體 結構體型別 是由不同資料型別變數組成的集合體,相當於其它高階語言中的記錄。結構體型別的資料由若干稱為 成員 的資料組成,每個成員既可以是乙個基本資料型別的資料,也可以是另乙個構造型別的資料。struct 型別名 以上整個部分是乙個資料型別,與整型的int是同樣地...

C 筆記 函式 筆記

在標頭檔案中進行函式宣告 建議變數和函式應該在標頭檔案中宣告,在原始檔中定義。使用引用避免拷貝 如果函式無須改變引用形參的值,最好將其宣告為常量引用。比較兩個string物件的長度 bool isshorter const string s1,const string s2 表示陣列大小的形參voi...

C 函式 筆記

內聯函式只適用於小函式,使用內聯函式需要注意以下幾點 內聯函式中不能含有任何迴圈語句以及switch和goto語句 內聯函式的宣告必須出現在內聯函式第一次被呼叫之前 內聯函式中不能說明陣列 遞迴函式不能定義為內聯函式 函式過載 函式引數個數或型別不同,可以構成過載函式 生命期 是指乙個識別符號從被建...