[C++基础]004_函数
[C++基础]004_函数
函数的声明方法1:
1 #include <iostream> 2 using namespace std; 3 4 int function(); 5 6 int main(){ 7 function(); 8 return 0; 9 } 10 11 int function(){ 12 cout<<"Hello, Function."<<endl; 13 return 0 ; 14 }
函数的声明方法2:
1 #include <iostream> 2 using namespace std; 3 4 int function(){ 5 cout<<"Hello, Function."<<endl; 6 return 0 ; 7 } 8 9 int main(){ 10 function(); 11 return 0; 12 }
看出来方法1和方法2的区别了吧,函数体的位置不一样,很简单,复习一下!
[C++基础]005_函数参数
函数参数的传递学问也不小,不过呢,核心就是两个概念:值传递和引用传递,也很简单。
值传递:传递参数的复制体,函数体内对参数进行修改,原参数值不会发生变化。
引用传递:传递函数的地址,函数体内修改参数会引起原参数值的变化。
值传递
1 using namespace std; 2 3 int function(int a, int b){ 4 cout<<"a + b = "<<(a+b)<<endl; 5 return 0 ; 6 } 7 8 int main(){ 9 int a = 1; 10 int b = 2; 11 function(a, b); 12 system("pause"); 13 return 0; 14 }
输出:
a+b = 3
请按任意键继续. . .
引用传递
1 #include <iostream> 2 using namespace std; 3 4 int function(int& a, int& b){ 5 cout<<"a + b = "<<(a+b)<<endl; 6 a = 10; 7 b = 20; 8 return 0 ; 9 } 10 11 int main(){ 12 int a = 1; 13 int b = 2; 14 function(a, b); 15 cout<<"a = "<<a<<endl; 16 cout<<"b = "<<b<<endl; 17 system("pause"); 18 return 0; 19 }
输出:
a + b = 3 a = 10 b = 20 请按任意键继续. . .
注意,a和b的值发生变化了!
[C++基础]006_函数默认参数
1 int function(int a, int b = 0) 2 { 3 cout<<"a + b = "<<(a+b)<<endl; 4 return 0 ; 5 }
上面的 int b = 0就是默认参数了,如果不传入b值的话,函数默认将使用b=0.
注意:
默认参数必须出现在结尾,或连续结尾。即如下的声明是非法的:
1 int function(int a=0, int b) 2 { 3 cout<<"a + b = "<<(a+b)<<endl; 4 a = 10; 5 b = 20; 6 return 0 ; 7 }
而下面是合法的:
1 int function(int a, int b=2, int c=1) 2 { 3 cout<<"a + b = "<<(a+b)<<endl; 4 a = 10; 5 b = 20; 6 return 0 ; 7 }
下面的也是合法的:
1 int function(int a=1, int b=2) 2 { 3 cout<<"a + b = "<<(a+b)<<endl; 4 a = 10; 5 b = 20; 6 return 0 ; 7 }