C語言 函式和指標

2021-08-16 16:38:53 字數 3526 閱讀 9264

05 函式與指標

本章內容:

¨ 掌握函式概念及函式應用

¨ 會應用c語言的內建函式

¨ 熟練使用c語言中的自定義函式

¨ 理解函式引數及引數的傳遞方式

¨ 理解指標的概念

¨ 基本掌握指標的用法

¨ 理解指標和陣列的關係

¨ 基本掌握指標作為函式引數的用法

一、函式機制的優點

¨使程式變得更簡短而清晰

¨有利於程式維護

¨可以提高程式開發的效率

¨提高了**的重用性

二、c語言中函式型別

常用內建函式:

三、函式定義

函式定義型別:

¨有返回值,有引數;  int add(int a, int b)

¨有返回值,無引數;  int add()

¨無返回值,有引數;  void add(int a, int b)

¨無返回值,無引數;  void add()

四、函式使用

(一)、函式原型說明:

• 函式原型說明在形式上與函式頭部類似,最後加乙個分號。原型說明中引數表裡的引數名可以不寫(只寫引數型別)

(二)、函式呼叫

¨ 通過在程式中使用函式名稱,可以執行函式中包含的語句,這稱為呼叫函式

¨ 函式之間允許相互呼叫,也允許巢狀呼叫從乙個函式呼叫另乙個函式稱為函式的巢狀呼叫

¨ 函式還可以自己呼叫自己,稱為遞迴呼叫

(三)、函式的引數

¨ 函式有時要求使用者傳入資料,這些資料是函式的引數

¨ 函式的引數分為形式引數和實際引數函式定義中宣告的引數為形式引數,函式呼叫時傳入的引數為實際引數

函式呼叫時傳參的方式:

¨值傳遞

將實參拷貝乙份賦值給形參

主調函式向呼叫函式傳遞引數實際上只是將實參的拷貝(即臨時副本)傳遞給了被呼叫函式,並不是實參本身,這樣被調函式不能直接修改主調函式中變數的值,而只能修改其私有的臨時副本的值。

¨址傳遞

讓形參和實參共享一片記憶體空間,即記憶體位址相同

引用傳遞是將實參位址的拷貝傳遞給被呼叫函式,在被呼叫函式中可以通過位址對其值進行修改。

對引用的操作等於對其制定的物件進行操作,當將實參傳遞給形參時,形參就指向了實參。

注意:

1、c語言中實參和形參之間的額資料傳遞是單向的「值傳遞」,單向傳遞,只能由實參傳給形參,反之不能。

2、被呼叫函式的形參只有函式被呼叫時才會臨時分配儲存單元,一旦呼叫結束占用的記憶體便會被釋放。

3、不論是「按值傳遞」還是「按位址(指標)傳遞」,傳遞的都是實參的乙個拷貝。

(四)、函式值的返回

¨ 函式可以有返回值也可以沒有返回值

¨ 當函式有返回值的時候其返回值的型別在函式定義時指定,在函式體內部由return語句進行返回操作

¨ 當函式沒有返回值時,用void關鍵字標識

(五)、變數的作用域

¨變數的有效範圍

¨變數的作用域決定了變數在某個程式塊中的可訪問性

五、指標

(一)、兩個關鍵的運算子:

¨& 取位址符

int i = 10;    &i;

以上**片段會得到變數i的位址(指標)

¨* 指標運算子(間接運算子)

int *p_i;

p_i = &i;

*p_i;

以上**將變數i的位址存放在指標變數p_i中,即讓指標變p_i指向變數i。最後一句使用了指標運算子*,*p_i其實就是變數i

(二)、 指標變數和變數的指標:

¨用來存放位址的變數稱為指標變數

¨變數的指標就是變數的位址

¨指標變數的定義與引用

int i = 10;  int *p_i;  p_i = &i;(指標變數)   *p_i = 20;

(三)、指標運算

¨指標的賦值運算:

指標變數之間可以進行賦值運算,指標變數的賦值結果為讓兩個指標變數指向同一片記憶體空間

¨指標的算數運算:

指標變數也可以像一般的變數一樣進行++運算或加上乙個整數的運算,但是指標的算術運算和普通算術運算的含義不同,指標的運算是讓指標變數的值加上乙個t型別變數所占用的記憶體大小的值,即使指標移動了乙個t型單位變數的位置,指標的算術運算常用來運算元組元素。

¨指標的關係運算子:

指標的關係運算一般只做「==」的運算,判斷兩個指標是否指向同一片記憶體空間

指標變數作為函式引數

(四)、指標變數作為函式引數

¨函式的引數不僅可以是整型/實型等資料型別指標型別,也能作為函式的引數

¨指標變數作為函式引數,呼叫時是將實參的位址傳遞給了形參即傳址的呼叫方式,此時形參和實參共享一片記憶體空間,當在函式內部改變形參的值時也就改變了實參的值

(五)、指向陣列的指標

C語言 指標函式和函式指標

指標函式和函式指標 指標函式其實是乙個簡稱,是指帶指標的函式,它本質上是乙個函式,只是返回的是某種型別的指標。其定義的格式為 型別識別符號 函式名 參數列 函式指標,從本質上說是乙個指標,只是它指向的不是一般的變數,而是乙個函式。因為每個函式都有乙個入口位址,函式指標指向的就是函式的入口位址。其定義...

C語言 指標函式和函式指標

1 指標函式是指帶指標的函式,本質上是乙個函式,函式返回值是某一型別的指標 定義 型別識別符號 函式名 參數列 int f int x,int y 它首先是乙個函式,只不過這個函式的返回值是乙個位址值,函式返回值必須用同型別的指標變數來接受,也就是說,指標函式一定有函式返回值,而且,在主調函式中,函...

C語言 函式和指標

1.指標陣列和陣列指標 int p 4 定義乙個指標陣列,該陣列中每個元素是乙個指標,每個指標指向 就需要程式中後續再定義了。int p 4 定義乙個陣列指標,該指標指向含4個元素的一維陣列 陣列中每個元素是int型 區分int p n 和int p n 就要看運算子的優先順序了。int p n 中...