1.為什麼定義函式,使用函式
在程式的設計過程中,會在許多地方出現想同的**,為了減少**數量,讓程式變得更加美觀,此時可以將這段程式單獨作為乙個整體,並用識別符號起乙個名字,當時使用時,直接呼叫函式名即可。這段程式叫作子程式,就是我們所說的函式。
2.函式的定義
(1) .定義的語法形式
資料型別
函式名(形式參數列)
說明:l void 表示無返回值.
l 函式名不能是main.
l 函式不允許巢狀定義,但可以巢狀呼叫(遞迴).
l 函式只有呼叫時才會發揮作用,否則不會執行.
(2) .樣例
定義乙個函式比較大小
int max (int x.int y)
該函式表示返回整數,返回接受的兩個實參中大的那乙個.
(3) .函式的形式
l 無參函式.
沒有引數傳遞的函式(即沒有形式參數列).
l 有參函式.
最為普通的函式
l 空函式
沒有執行語句,只有一對花括號,多數為了以後修改bug時用的
2.函式的宣告和呼叫
(1).函式的宣告
函式呼叫時必須要先宣告函式原型,或者這個函式在主函式上面定義,並寫出函式體.函式如下形式宣告:
資料結構
被調函式名(含有型別說明的形式參數列);//;是最重要的
樣例:
int max(int a,int b);
int max(int ,int );
// 兩種形式都對
(2) .函式的呼叫
函式名(實參列表);//;不要忘了
樣例:
int mian()
(3) .函式的返回值
return 表示式;
return ;//表示無返回值,只是結束函式,並返回
當函式無返回值時,可以不用寫return;
(4).函式的傳值呼叫
函式傳值呼叫的特點是將被調函式的實參表中的實參值依次對應地傳遞給被呼叫函式的形式參表中的形參.要求形參與實參的型別相同.
這種方式是將實參賦值乙個給形參,形參的計算與主函式內的實參無關,,稱為單向值傳遞.
樣例:
#includeusing namespace std;
void swap(int a,int b)
int main()
int main()
int main()
{ int c=1;
int d=2;
swap(&c,&d);
cout說明:指標變數前面 * 表示取值
(6).全域性變數與區域性變數及它們的作用域
定義在函式外部沒有被花括號火起來的變數稱為全域性變數,作用域是從函式定義的位置開始到檔案的結束.
l 可以在任何乙個函式中使用
l 過多的使用全域性變數會降低程式的通用性
l 過多的使用全域性變數會增加程式的除錯難度
l 全域性變數會一直占用記憶體空間
l 全域性變數可以定義很大的陣列
l 全域性變數的初始值預設為零
定義在函式內部的變數稱為區域性變數,(這個函式是廣義上的函式,及一對花括號內部)
l 變數的記憶體空間只保留到這個函式結束,其中的值在下乙個函式內無法使用
l 在不同函式內部可以使用相同的符號表示不同的不同的變數
l 區域性變數可以與全域性變數重名,但在相同的作用域內區域性變數有效二全域性變數無效,即區域性變數能遮蔽全部變數
l 區域性便能量的初始值隨機,而且陣列不能定義過大
(1).指標變數定義的一般形式
型別說明符 *變數名;
l 型別說明符表示的指標指向的元素的型別
(2).
指標變數的初始化的方法:
int a;
int *p=&a
//或者:
int a;
int *p;
p=&a;
詳細如**釋:
指標變數同普通變數一樣,使用之前不僅要定義說明,而且必須被賦予具體的值,未經賦值的指標變數不能使用。
(3).指標的引用與運算
&表示取位址
對應關係
初始化方法
(4).指標與陣列的關係
l 指向陣列的指標變數稱為陣列指標變數
l 指標表示的是陣列的首位址
定義:型別說明符 *指標變數名;
*指標變數名=陣列名;
這時可以直接拿陣列名當指標用
樣例:
int a[10];
int *p;
*p=a;
l 可以用怕p[i]的形式來訪問a的陣列元素
l 可以用*(p+i)的形式來訪問a的陣列元素
l 實際上陣列名就是乙個指標,但是不是變數,是乙個定量
l 指標同樣可以看成陣列名(傳說中動態陣列的一種)
(5).指標與函式的關係
l 指標同樣可以作為函式的形參變數(樣例在傳址變數那裡)
l 指標變數做引數時,呼叫時要用&(取位址符)(同樣,上面有樣例)
l 指標變數改變時,主函式內的值同樣發生改變
(1).定義
在函式的定義中,其內部操作又直接或間接的呼叫自身,稱這樣的程式叫作巢狀定義或遞迴定義.
(2).遞迴的特點
l 將乙個大型的複雜的問題層層轉化為與原問題相似的規模較小的問題來計算.
l 降低了計算量
l 開始標誌:使問題向邊界條件轉化的規則。遞迴定義必須能使問題越來越簡單。
l 終止標誌:也就是所描述問題的最簡單情況,它本身不再使用遞迴的定義。
l 遞迴的次數要有限次
l 注意遞迴的返回值
l 必須有乙個出口,即遞迴停止的標誌
(3)遞迴實現的步驟
l 分析問題、尋找遞迴:找出大規模問題與小規模問題的關係,這樣通過遞迴使問題的規模逐漸變小。
l 設定邊界、控制遞迴:找出停止條件,即演算法可解的最小規模問題。
函式學習總結
從開學到現在學習函式知識三個周,我從中學會了很多,但 也有很多疑惑和不懂的地方,下面是我的一些學習總結 第一點函式需要先定義,定義之後才能使用,函式的一般形式 如下 第二點函式呼叫的含義 為函式分配儲存空間,執行函式。函式呼叫的過程 第三點引用的概念 型別名 引用名 某變數名。某個變數的引 用和這個...
函式學習總結
一.知識點 1.語法形式 資料型別 函式名 形式參數列 函式體 注 1 資料型別指返回值型別 void無返回值 2 形參表可空 但 不可省 2.函式呼叫三種方式 1 傳數值 實參賦值給形參,在被呼叫函式中形參值可以改變,但不影響主調函式的實參值,主函式的值仍為呼叫前的值,例如用swap函式交換ab兩...
函式學習總結
函式 一般的,我們有 設 a b 是非空的數集,如果按照某種確定的對應關係 f 使對於集合 a 種的任意乙個數 x 在集合 b 中都有唯一確定的數 f x 和它對應,那麼就稱 f a to b 為從集合 a 到集合 b 的乙個函式,記作 y f x x in a.其中,x 叫自變數,x 的取值範圍 ...