u前提:已知道什么是形参,实参。
例:void change(int a ,int b )
{ a=2*b; b=0;}
int main()
{
int x=3,y=4;
change(x,y);//调用函数
cout<<x<<' '<<y;
return 0;
}
程序的头文件我们暂时不写了。
这个时候我们可以看到,结果没有发生变化,那我们更改下change函数。
void change(int a ,int b )
{ a=2*b; b=0; cout<<a<<' '<<b<<endl;}
由此可以看到,函数确实起到了作用,但是却没有更改函数外的变量。什么原因呢?
然后对a,b指向的内存单元进行更改,和x,y对应的内存单元没啥关系,只是用了用人家的值。
那如何不仅用人家的值还用人家的内存单元呢?比较阴险,哈哈。
就跟一个人起两个名一样,定义时算是人家的大名,那咱们函数用的时候,再给人家起个小名,证明这是咱们的函数用的,嘿嘿。不过虽然人家是小名,也对内存空间有操作权。看小名的吧,它是这样的:
这样,虽然是小名,也可以和大名有同样的权利了。那怎么说,我是小名呢?我们在函数参数的前面加上取地址符&即可。
void change(int &a ,int &b )
{ a=2*b; b=0; cout<<a<<' '<<b<<endl;}
不仅函数内部数值改变了,也对函数外部的参数起了作用。证明了大名小名都是名,都有同样的对内存单元值更改的权利。yeah!!!!!!!!!
形参和实参你会了吗?
如果对&没有太深理解的话,先记住这个形式,等我们下次讲的时候就知道啦!