函数形参 原型、指针、引用、

2012-10-19 21:48 (分类:计算机程序)

写的这些是在给学弟学妹讲解时自己更深层次的理解,为别人解惑,思考过程中自己也有新的认识。
更重要的,这些或许是将来某天我要放弃这行时,最后坚持的理由——曾经热爱过的理想。

一  、

int a=3,b=4;
void f(int x,int y)

int temp;
 temp=a;a=b;b=temp; //试图交换a,b 

f(a,b);
cout<<a<<" "<<b<<endl;
结果为   3、4 

a和b的值都没有改变,只是将值传递给形参x、y,在被调函数内部使用,函数外无影响。


二 、若要使a、b值发生改变如下

void f(int *x,int *y)

{

 int temp;
temp=*x;*x=*y;*y=temp;
}

f(&a,&b);

cout<<a<<" "<<b<<endl;

结果 为  4、3


三、还应注意

#include<iostream>
using namespace std;
void f(int *p)
{
int a=3;
p=&a; // 注意
}

int main()

{
int x=4;
int *p1=&x;

f(p1);
cout<<*p1<<endl;

return 0;
}

输出的结果是4,指针p1调用f函数后值并没有得到改变;p=&a 称之为      给指针赋值

意思是给指针本身一个指向的对象;p=&a是相当于把函数的形参指针p指向a(即给指针赋值,此值是a的地址),但由于a是临时变量,函数调用完后即不存在了,所以实参p1是不会被改变的,*p1=4


#include<iostream> 
using namespace std;
void f(int *p)
...{
int a=3;
*p=a; //不同之处

int main()
...{
int x=4;
int *p1=&x;
f(p1);
cout<<*p1<<endl;
return 0;
}

输出结果是3,指针p1在调用f函数后得到改变;*p=a称之为    通过指针进行赋值,

意思是改变指针所指对象的值;*p=a就不同了,函数是值传递,实参p1传递给形参p的值是什么呢?当然是x的地址,也就是说,在函数f调用的过程中,形参指针p指向了x,然后进行的*p=a是通过指针进行赋值,改变了p指向的对象x,p1仍然指向x,故*p1=3


四、引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。特别强调的是引用并不产生对象的副本,仅仅是对象的同义词

void f(int &a,int &b)

 

{

 int temp;

temp=a;
 a=b;
b=temp;

}

f(x,y)

 

f(x,y)     c++自动把x,y的地址作为参数传递给f函数@王猛@关键@李宁

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值