第六章函式

2021-08-17 09:09:55 字數 2943 閱讀 5297

第六章    函式(重要知識點)

1 函式定義的語法形式

資料型別  函式名 (形式參數列)

關於函式的定義有如下說明。

*函式的資料型別是函式的返回值型別(若資料型別為void,則無返回值)。

函式名是識別符號,乙個程式中除了主函式名必須為main外,其餘函式的名字按照識別符號的取名規則可以任意選取。

*形式引數(簡稱形參)表可以是空的(即無參函式),也可以有多個形參,形參間用逗號隔開。形谷必須有型別說明,形參可以是變數名、陣列名或指標名,它的作用是實現主調的數與被調函式之間的關係。

*函式不允許巢狀定義。在乙個函式內定義另乙個函式是非法的,但是允許巢狀使用。

2函式的呼叫和返回值

呼叫:

*函式的呼叫完成兩項工作:一是用實參初始化函式對應的形參,二是將控制權轉移給被呼叫函式。此時,主調函式的執行被暫時中斷,被調函式開始執行。

*函式呼叫可以作為一條語句,這時函式可以沒有返回值。函式呼叫也可以出現在表示式中,這時就必須有乙個明確的返回值。

返回值:

*在組成函式體的各類語句中,值得注意的是返回語句return。它的一般形式是:

return(表示式);

其功能是把程式流程從被調函式轉向主調函式並把表示式的值帶回主調函式,實現函式值的返回。若為return,此時則沒有返回值,而只是將流程轉向主調函式。

3 指標變數

指標變數:其內容為位址(儲存位置

)的變數,簡稱指標。它所指向的位址上存放的變數稱作目標變數。

指標變數的定義的一般形式為:

int(

目標變數型別

) 指標說明符+變數名(int *p)

*指標變數賦值:

int *p=&i

(將在i的位址上的值傳給p的位址上)

*p=3

(將3賦值給p位址上的目標變數)----取內容運算

ps:絕對不能對未賦值的指標變數作」取內容「運算。

*指標變數做函式引數:

函式的引數可以是指標型別,它的作用是將乙個變數的

位址傳送到另乙個函式中。

*指標變數作為函式引數與變數本身作函式引數不同,

變數作函式引數傳遞的是具體值,而指標做函式引數傳遞的是記憶體的位址。

(用指標變數做函式引數,在被呼叫函式的執行過程中,應使指標變數所指向的引數值發生變化,這樣,函式在呼叫結束後,其變化之才能保留會主調函式。)

*c++中函式呼叫時的三種引數傳遞方式

·在c++中。引數的傳遞方式是「虛實結合」

----按值傳遞

(被呼叫函式本身

不對實參進行操作

!即使形參的值在函式中發生了變化,實參的值也完全不會受到影響,仍為呼叫前的值。)

----位址傳遞

·如果在函式定義時將實參說明成指標,呼叫函式時就需要指定位址形式的實參。這時的引數傳遞方式就是按位址傳遞方式。

·按位址傳遞與按值傳遞的不同在於,形參指標和實參指標指向同乙個位址。因此,

被呼叫函式中對形參指標所指向的位址中任何改變都會影響到實參。

例如轉換a,b的值

#include

using namespace std:

void swap(int *,int *);

int main()

void swap(int *x,int*y)

----引用傳遞

此方式既可以

使得對應形參的任何操作都能改變相應的資料

,又使得函式呼叫顯得方便。此方式是在函式定義時在形參前面加上引用運算子「&」。

例如轉換a,b的值:

#include

using namespace std:

void swap(int &,int &);

int main()

void swap(int &x,int&y)

陣列與指標

陣列的指標就是陣列的起始位址。陣列元素的指標就是陣列元素的位址

。如:int a[10],*p;

p=&a[0](p的指標指向a[0]的位址);

p=a;(p的指標指向a[0]的位址);

(p是變數,a是常量)。

int *p=a

和int *p=&a[0]

均為賦初值。

*(p+1)=2即為a[1]=2;

*(a+1)與a[1]等同;

*(+a=2)錯誤,

因為a為常量,不可賦值

。例如輸出陣列各個值的乘積:

int main()

;int s,i,*p;

s=1;p=x;

for(i=0;i<=3;i++)

s*=*(p+i);

cout<

}全域性變數:

定義在函式外部沒有被花括號括起來的變數稱為全域性變數;全域性變數的作用域是從變數定義的位置開始到檔案結束,可以在檔案中位於全域性變數定義後面的任何函式中使用。

ps:全域性變數在定義時若沒有賦初值,其預設值為零。

區域性變數:

區域性變數的作用域是該變數的函式內部。

乙個區域性變數和乙個全域性變數是可以重名的,在相同的作用域中區域性變數有效時全域性變數無效。

區域性變數的預設值是隨機的。

第六章 函式

示例 使用函式列印菱形 include intprint star int main intprint star int i,j for i 0 i 4 i 定義無參函式 函式名後面的括號中是空的,沒有任何引數,定義無參函式的一般形式為 型別名 函式名 或 型別名 函式名 void 函式體包括宣告部...

c 第六章函式

基礎知識總結 一 函式定義 c 程式的典型結構 第1部分 預處理指令 符號常量定義 函式宣告 第2部分 主函式 第2部分 函式定義 函式定義的形式 資料型別 函式名 形式參數列 函式體 執行語句 注 1 資料型別是函式的返回值型別,若資料型別為void,則無返回值。2 形式參數列可以是空的 即無參函...

第六章 函式作業

e201 06 07 驗證四位卡布列克數 題目要求 如題 解題思路 1.輸入乙個四位數 2.判斷輸入的數是不是6174 3.定義函式 4.求出這個數的各個位 5.運用冒泡轉化 6.迴圈輸出6174 public class e201 06 07 驗證四位卡布列克數 private static in...