一.函數默認參數
1.缺省參數:就是在聲明函數的某個參數的時候 給他一個默認值
1 #include<iostream> 2 using namespace std; 3 4 void Show(int a = 1,int b = 2,int c = 3) 5 { 6 cout << a << endl; 7 cout << b << endl; 8 cout << c << endl; 9 } 10 11 int main() 12 { 13 Show(); 14 return 0; 15 }
2.函數的參數可以存默認值 在調用的時候就可以不用去傳了
但也可以傳參 傳了就把默認值覆蓋 傳幾個都行 但是第一個不傳不可以 因為這是有一種壓棧的過程的 后面不傳可以
但是在聲明函數的時候 前面的默認值可以不給
1 #include<iostream> 2 using namespace std; 3 4 void Show(int a,int b = 2,int c = 3) 5 { 6 cout << a << endl; 7 cout << b << endl; 8 cout << c << endl; 9 } 10 11 int main() 12 { 13 Show(100); 14 return 0; 15 }
3.總結:
默認參數值一定在右邊 中間是不可以空缺的
默認參數一定要在聲明函數中寫
二.函數重載
在同一個作用域中 函數名一樣 參數列表不同(即參數個數或類型不同)
根據調用的什么類型的參數 給幾個 就會去執行對應的函數
1 #include<iostream> 2 using namespace std; 3 4 void Area(int r) 5 { 6 cout << r*r*3.14 << endl; 7 } 8 9 void Area(int l,int h) 10 { 11 cout << l*h <<endl; 12 } 13 14 int main() 15 { 16 Area(1); 17 Area(1,2); 18 return 0; 19 }
三.引用
1.定義:是C++語言的一個特殊的數據類型的描述 可以理解為“起小名”
用於在程序的不同部分使用兩個以上的變量名指定同一地址 這樣就使對其中任何一個變量操作都是對同一地址單元進行的
在這種兩個以上變量名的關系上 被聲明為引用類型的變量名就是實際變量名的別名
注意:定義引用 一定要初始化!!!
2.引用運算符:&
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int a = 100; 6 int& k = a; 7 k = 200; 8 cout << a << endl; 9 10 return 0; 11 }
對引用操作 就是對引用的變量進行操作
引用不是值 不占存儲空間 聲明引用的時候 目標的存儲狀態不會改變
一旦引用被初始化 就不能再重新引用其他空間
3.指針和引用的區別:
①引用定義了就要初始化 但是指針不用
②引用初始化后不能再重新引用其他空間 但是指針可以動
③引用沒有空的 但是有空指針
引用一定要保證:引用的是一個合法的存儲單元
4.引用的優點:空間 效率 安全
5.在使用的時候 如何選擇指針和引用:
①如果要裝地址 或者有地址偏移的操作 那就用指針(new)
②如果要對單一的空間進行操作 引用就可以
6.“引用”通常作為函數的參數 那么傳參的方式可以分為以下三種:
①值傳遞:
1 #include<iostream> 2 using namespace std; 3 4 void Change(int x,int y) 5 { 6 int temp = x; 7 x = y; 8 y = temp; 9 } 10 11 int main() 12 { 13 int a = 100; 14 int b = 200; 15 Change(a,b); 16 17 cout << a << endl; 18 cout << b << endl; 19 20 return 0; 21 }
交換兩數 交換x和y 執行結束空間被回收 a和b沒有被交換
②地址傳遞:
1 #include<iostream> 2 using namespace std; 3 4 void Change(int* x,int* y) 5 { 6 int temp = *x; 7 *x = *y; 8 *y = temp; 9 } 10 11 int main() 12 { 13 int a = 100; 14 int b = 200; 15 Change(&a,&b); 16 17 cout << a << endl; 18 cout << b << endl; 19 20 return 0; 21 }
間接操作所指向的兩塊空間 a和b交換
③引用傳遞:
1 #include<iostream> 2 using namespace std; 3 4 void Change(int& x,int& y) 5 { 6 int temp = x; 7 x = y; 8 y = temp; 9 } 10 11 int main() 12 { 13 int a = 100; 14 int b = 200; 15 Change(a,b); 16 17 cout << a << endl; 18 cout << b << endl; 19 20 return 0; 21 }
對x和y操作就是對a和b進行操作 a和b成功交換 (PS:碼到這里真的覺得引用真的好方便阿~)
7.總結:空間變量是看生命周期去選的 要控制生命周期就要選堆區
可以看是否要修改傳入的內容 不改就用值傳遞 改就用地址或者引用
接着看傳進來的是不是new的 是不是地址 是就用指針 不是地址就用引用就可以了
