C++函数和函数的调用

C++函数的调用与参数的传递
四种不同类型的函数:
1、返回类型 函数名(参数列表) //返回
2、返回类型 函数名()
3、void 函数名(参数列表) //不需要返回
4、void 函数名()

形式参数与实际参数(形参和实参)
1、函数定义中的参数为形式参数, 如long long C(int n,int m)中的n和m为形式参数,也不一定一定要用n,m,完全可以用a,b代替。
2、实际参数是指实际调用函数时传递给函数的参数的值。如调用函数C(6,3)这里的6和3就是实际参数,其中6传递给n,3传递给m。

参数的传递
1、传值参数————这里的值不光包括数值,还包括字符等类型的值。
2、引用参数————函数定义时在变量类型符号之后形式参数之前加上“&”,则该参数就是引用参数,把参数声明成引用参数,实际上就是改变了默认
默认的按值传递参数的传递机制,引用参数会直接关联到其绑定的对象,而并非这些对象的副本,形参就像是对应实参的别名,
形参的变化会保留到实参中。(实际上 a 和 &a 看似不一样,其实表示的是一个值)

典型实例:把a=3,b=4的值交换,既a=4,b=3

#include<iostream>
using namespace std;
void swap(int a,int b);
int main()
{
    int a=3,b=4;
    swap(a,b);
    cout<<a<<" "<<b<<endl; 

}
void swap(int a,int b)
{
    int temp;
    temp=a;
    a=b;
    b=temp;
    cout<<a<<" "<<b<<endl;        //验证改变的是形参,这里的a,b是形参
}

这个程序中main函数中的a,b和swap函数中的a,b不是一个值,swap函数中的a,b只能在swap函数中使用,是形参。程序中虽然调用了swap函数,
但是,实际上是把3传给了形参a,4传给了形参b,swap函数值是把形参交换了,实际参数并没有改变。
修改一下函数:

#include<iostream>
using namespace std; void swap(int &a,int &b); int main() { int a=3,b=4; swap(a,b); cout<<a<<" "<<b<<endl; } void swap(int &a,int &b) { int temp; temp=a; a=b; b=temp; cout<<a<<" "<<b<<endl; //验证改变的是形参,这里的a,b是形参 }

swap函数中使用了“&”,表示传递过来的是引用,实际上就是实参的另一个名称而已。这和我们人有一个学名和一个乳名但都是指一个人,是一个道理。

其实还有一种把变量地址作为参数传递的函数,这样以后学到指针的时候才能理解。可以先看一下

#include<iostream>
using namespace std;
void swap(int *a,int *b);
int main()
{
    int a=3,b=4;
    swap(&a,&b);
    cout<<a<<" "<<b<<endl;

}
void swap(int *a,int *b)
{ 
    int temp;
    temp=*a;
    *a=*b;
    *b=temp;
    cout<<*a<<" "<<*b<<endl;        //验证改变的是形参,这里的a,b是形参
}

猜你喜欢

转载自www.cnblogs.com/legenBlog/p/10493859.html