函式
目錄
函式
1. 函式是什么?
2. C語言中函式的分類:
2.1 庫函式:
2.1.1 如何學會使用庫函式?
2.2 自定義函式
3. 函式的引數
3.1 實際引數(實參):
3.2 形式引數(形參):
4. 函式的呼叫:
4.1 傳值呼叫
4.2 傳址呼叫
4.3 練習
//今天就先只能講到這里了哈!后面的下次再講
5.
函式呼叫
6.
函式的嵌套呼叫和鏈式訪問
7.
函式的宣告和定義
8.
函式遞回
1. 函式是什么?
數學中我們常見到函式的概念,但是你了解
C
語言中的函式嗎?
維基百科中對函式的定義:
子程式
在計算機科學中,子程式(英語:
Subroutine, procedure, function, routine, method,
subprogram, callable unit
),是一個大型程式中的某部分代碼, 由一個或多個陳述句塊組
成,它負責完成某項特定任務,而且相較于其他代 碼,具備相對的獨立性,
一般會有輸入引數并有回傳值,提供對程序的封裝和細節的隱藏,這些代碼通常被集成為軟
件庫,
2. C語言中函式的分類:
1.
庫函式
2.
自定義函式
2.1 庫函式:
為什么會有庫函式?
1.
我們知道在我們學習
C
語言編程的時候,總是在一個代碼撰寫完成之后迫不及待的想知道結果,想
把這個結果列印到我們的螢屏上看看,這個時候我們會頻繁的使用一個功能:將資訊按照一定的格
式列印到螢屏上(
printf
),
2.
在編程的程序中我們會頻繁的做一些字串的拷貝作業(
strcpy
),
3.
在編程是我們也計算,總是會計算
n
的
k
次方這樣的運算(
pow
),
像上面我們描述的基礎功能,它們不是業務性的代碼,我們在開發的程序中每個程式員都可能用的到, 為了支持可移植性和提高程式的效率,所以C
語言的基礎庫中提供了一系列類似的庫函式,方便程式員 進行軟體開發,
那怎么學習庫函式呢?
這里我們簡單的看看:
www.cplusplus.com
簡單的總結,C語言常用的庫
- IO函式
- 字串操作函式
- 字符操作函式
- 記憶體操作函式
- 時間/日期函式
- 數學函式
- 其他庫函式
我們參照檔案,學習幾個庫函式:
(
教會學生怎么使用檔案來學習庫函式
)
,
strcpy
char *
strcpy
(
char *
destination
,
const
char *
source
);

memset
void *
memset
(
void *
ptr
,
int
value
,
size_t
num
);
注:
但是庫函式必須知道的一個秘密就是:使用庫函式,必須包含
#include
對應的頭檔案,
這里對照檔案來學習上面幾個庫函式,目的是掌握庫函式的使用方法,
2.1.1 如何學會使用庫函式?
需要全部記住嗎?
No
需要學會查詢工具的使用:
MSDN(Microsoft Developer Network)
www.cplusplus.com
http://en.cppreference.com
(英文版)
http://zh.cppreference.com
(中文版)
英文很重要,最起碼得看懂文獻,其實也就是看那幾個地方,看多了就懂了哈!
2.2 自定義函式
如果庫函式能干所有的事情,那還要程式員干什么?
所有更加重要的是
自定義函式
,
自定義函式和庫函式一樣,有函式名,回傳值型別和函式引數,
但是不一樣的是這些都是我們自己來設計,這給程式員一個很大的發揮空間,
函式的組成:
ret_type
fun_name
(
para1
,
*
)
{
statement
;
//
陳述句項
}
ret_type
回傳型別
fun_name
函式名
para1
函式引數
//這個是每個函式的模板,就是說都包括這幾個地方,一定要記得哈!
我們舉一個例子:
寫一個函式可以找出兩個整數中的最大值,
再舉個例子:
寫一個函式可以交換兩個整形變數的內容,
3. 函式的引數
3.1 實際引數(實參):
真實傳給函式的引數,叫實參,
實參可以是:常量、變數、運算式、函式等,
無論實參是何種型別的量,在進行函式呼叫時,它們都必須有確定的值,以便把這些值傳送給形
參,

3.2 形式引數(形參):
形式引數是指函式名后括號中的變數,因為形式引數只有在函式被呼叫的程序中才實體化(分配內
存單
元),所以叫形式引數,形式引數當函式呼叫完成之后就自動銷毀了,因此形式引數只在函式中有
效,

代碼對應的記憶體分分配如下:
這里可以看到 Swap1 函式在呼叫的時候, x , y 擁有自己的空間,同時擁有了和實參一模一樣的內容,
所以我們可以簡單的認為:
形參實體化之后其實相當于實參的一份臨時拷貝
,
4. 函式的呼叫:
4.1 傳值呼叫
函式的形參和實參分別占有不同記憶體塊,對形參的修改不會影響實參,
4.2 傳址呼叫
傳址呼叫是把函式外部創建變數的記憶體地址傳遞給函式引數的一種呼叫函式的方式,
這種傳參方式可以讓函式和函式外邊的變數建立起真正的聯系,也就是函式內部可以直接操
作函式外部的變數,
4.3 練習
1.
寫一個函式可以判斷一個數是不是素數,
2.
寫一個函式判斷一年是不是閏年,
3.
寫一個函式,實作一個整形有序陣列的二分查找,
4.
寫一個函式,每呼叫一次這個函式,就會將
num
的值增加
1
,
5.寫一個關機程式,程式啟動60s內就會關機,除非輸入:你好帥我好愛,就取消關機,
1:
2:

3:


4:


5.

今天的內容就結束了哈!!!!
雖然不多但還是肝了我一下午,如果覺得對你有一點點用的話,就來一波點贊加關注哈!!!
祝我們一起變好!!!