资源描述:
《c语言实参、形参、函数调用、指针、引用、&符号实例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C语言实参、形参、函数调用、指针、引用、*&符号实例实现环境:VC6程序源代码:#include"stdio.h"#includevoidfun1(inta)//传值调用{printf("形参a为:%d",a);a--;printf("形参a变为:%d",a);}voidfun2(int*b)//指针调用{printf("指针形参b为:%X",b);printf("指针形参b所指内容为:%d",*b);(*b)--;printf("指针形参b所指内容变为:%d",*b);}voidfun3(int&c)//数值的引用调用,相当于给数值实参n起个新名
2、字叫c,然后c就是实参n{printf("引用数值形参c的地址为:%X",&c);printf("引用数值形参c为:%d",c);c--;printf("引用数值形参c变为:%d",c);}voidfun4(int*&d)//指针的引用调用,相当于给指针实参m起个新名字叫d,然后d就是实参m{printf("引用指针参数d为:%X",d);printf("引用指针参数d所指内容为:%d",*d);(*d)--;printf("引用指针参数d所指内容变为:%d",*d);}voidmain(){intn=11;//有11个苹果printf("实参n为:%d",n
3、);fun1(n);//传值调用printf("数值n为:%d",n);printf("实参n的地址为:%X",&n);printf("数值n为:%d",n);fun2(&n);//指针调用printf("实参n的地址为:%X",&n);printf("数值n为:%d",n);printf("实参n的地址为:%X",&n);printf("数值n为:%d",n);fun3(n);//数值的引用调用printf("实参n的地址为:%X",&n);printf("数值n为:%d",n);int*m;m=&n;printf("数值n的地址为:%X
4、",&n);printf("数值n为:%d",n);printf("指针m为:%X",m);fun4(m);//指针的引用调用printf("数值n的地址为:%X",&n);printf("数值n为:%d",n);printf("指针m为:%X",m);}参考内容:VC++中形参什么时候需要加&符号引用不是必须的,因为用指针可以达到相同的效果当你传递的实参值需要在函数中获取改变的时候,就需要传引用或者指针假设有n=10个苹果voidfun(intm)//传值函数,每调用一次减少一个苹果fun(n);//如果按上面的声明,这样调用完后,n还是10,并没有变成9在
5、这种时候就需要用到引用或者指针voidfun(int&m);//引用类型函数声明,对应调用fun(n);//voidfun(int*m);//指针类型函数声明,对应调用fun(&n);//具体的函数体可以自己去写事实上,引用的本质就是指针,使用引用能完成的事情,使用指针同样能完成,不过引用看上去更简洁和直观引用参数在形参表中以符号“&”开始的参数即为引用参数。如果一个形参是引用参数,调用部位将把实参的地址传递给子程序。于是子程序操作的就是实参真正的变量,而不是它的副本。如果程序员想修改指针本身,而不是指针引用的对象:那么他可以声明一个参数,该参数是一个指针的引用,例如:下面是交换两个指针
6、的函数。12345voidptrswap(int*&v1,int*&v2){ int*tmp=v2; v2=v1; v1=tmp; }如下声明 int*&v1; //实际是为指针取了一个别名,这样就可以通过别名改变指针本身应该从右向左读,v1是一个引用,它引用一个指针,指针指向int型的对象。用函数main()操纵函数rswap()我们可以如下修改代码以便交换两个指针值:12345#include voidptrswap(int*&v1,int*&v2); intmain(){ inti=10; 67891011121314151617181920 i
7、ntj=20; int*pi=&i; int*pj=&j; cout<<"Beforeptrswap():tpi:" <<*pi<<"tpj:"<<*pj<