第五章 函式
前言: 函式是乙個命名的**塊,通過呼叫函式可以執行相應的**。 1 用來實現特定任務 2 庫函式
函式之間通過轉遞引數和返回值進行通訊。
c++支援按值和按引用傳遞引數;
c++允許過載函式;
一.函式定義
返回型別 函式名(引數列表)
函式體(語句塊)
引數列表 : 需要從外界獲取什麼
函式的結果 : 返回值
函式的運算元 : 引數
函式的引數列表不能省略,由逗號分隔的形參列表構成,每個形參型別之後跟乙個可選的形參名字。
如果函式不返回任何結果,可以將其返回型別宣告為void。
函式分類:
1 無參函式 2 有參函式 3 空函式
二.函式呼叫
函式名 (實參列表);
形參:函式定義中的引數。
實參:在呼叫函式是提供的資料
若實參型別與相應的形參型別不匹配,如果有可能,就會應用乙個**的型別轉換。
如:int a (int n)
當n取浮點數時,該實參能轉換為整數型別。(自動取整)
簡單應用: 用函式判斷素數
#include
#include
#include
#include
usingnamespace std;
intddd
(int x)
;int
main()
else
return0;
}int
ddd(
int x)
t=2;while
(t<=
sqrt
(x)&&x%t!=0)
++t;
if(x%t==0)
return0;
else
return1;
}
函式呼叫時完成的兩項工作:
實參初始化函式對應的形參
將控制權轉移可被呼叫的函式。
結束時return語句的兩個作用:
返回return語句中的值(如果有的話)
將控制權從被調函式轉移給主調函式。
三.函式宣告:
函式在使用前必須宣告。
(多次宣告,一次定義)
函式名,函式返回型別和形參列表構成了函式原型。
函式原型規定了函式的介面;
函式宣告說明了函式的介面;
四.引數傳遞
引數轉遞是指用函式呼叫的實參來初始化函式形參儲存區的過程。
引數轉遞方式:1.傳值2.傳引用
( 1 )按值傳遞 :用實參值初始化形參
缺點:在被呼叫函式中,形參值可以改變,但不影響主調函式的實參值。引數傳遞方向只是從實參到形參,簡稱:單向值傳遞。
不適用情況:
·當大型的類物件或結構體變數作為引數按值傳遞時,為物件在執行棧中分配空間並複製物件的時間和空間開銷往往夠大。
如果要改變實參的值,(兩種辦法):
將引數宣告為指標,用變數的位址實施呼叫。
(傳值呼叫)
將引數宣告為引用。
( 2 )按引用傳遞
按值傳遞時,函式操作的是實參的本地副本。
但引數是引用時,形參是實參的引用,函式操作的形參是實參的別名,因而可以改變實參的值。
引用引數的三種基本用途:
1.通過傳遞引用在函式內修改實參的值。
2.向主調函式返回格外的結果。
3.向函式傳遞乙個大型的結構體變數或類物件。
( 3 )陣列引數
在c++中陣列永遠不會按值傳遞,陣列做引數時,將傳遞陣列第乙個元素的位址,陣列的長度與引數宣告無關。
如: 下面三個宣告是等價的;
void foo (int *a);
void foo (int a[ ]);
void foo (int a[ 10 ]);
五.返回型別和return語句
兩種形式:
return;
return
表示式;
注意: 不能返回自動區域性物件的指標或引用。
六.函式過載
前言:幾個不同的函式可以使用相同的名字;
有時需要定義一組函式,它們對不同型別的資料執行同樣的一般性動作,表達相同的概念。
七.作用域和儲存型別
生產期:指程式執行過程中物件存在的時間。
(物件的生產期與物件的作業域和儲存型別密切相關)
作用域:程式的一段區域,名字的作業域指的是該名字可以在哪些程式文字區使用。
在函式外部定義的變數稱為外部變數或全域性變數;
在函式內部定義的變數稱為內部變數或區域性變數;
全域性變數陣列初始化全部為0;區域性變數值是隨機的,要初始化初值,區域性變數受棧空間大小限制,大陣列需要注意。
暫存器變數:用register宣告,對編譯器而言是乙個建議。
區域性物件:
自動物件
c++的函式會定義和使用一些區域性變數,當執行函式時,為其中定義的區域性變數分配空間,稱為自動物件。如:函式的形參。
靜態物件
需要在同乙個函式兩次呼叫之間保留某些資料。
可以將區域性變數物件宣告為static,這樣的物件是靜態儲存的。
第五章 函式
第五章 函式 1 函式的定義 shell函式定義可以放在 bash profile 檔案中,也可以在使用該函式的指令碼中,還可以在命令列中 通過 source 或 執行bash profile檔案,使修改能夠立即生效 function 函式名 declare f 顯示定義的函式清單 export f...
第五章 函式
在lua中,函式是對語句和表示式進行抽象的主要機制。即使呼叫函式時沒有引數,也必須要寫出一對空括號。一種特殊的例外情況 乙個函式若只有乙個引數,且此引數是乙個字面字串或table構造式,那麼圓括號別是可有可無的。print hello world dofile test.lua print a mu...
第五章知識回顧
1.終端機環境中,依據提示字元 和 判斷為一般賬號或者root 賬號 2.取得終端機支援的語系資料,echo lang 和 locale 指令,學會切換不同地區和國家的語言 lang en 3.date 可顯示日期 並學會控制其顯示格式例如,y m d h m cal可顯示日曆 學會準確查出某年某月...