指针和引用作为函数传递参数

引用传递

  1. void OutputNumber(int &nNumber) //设置引用类型参数  
  2. {  
  3.     cout << nNumber << endl;                            //输出结果  
  4.     nNumber 20;                                   //修改参数值,将影响到实际参数  
  5. }  
  6. int main(int argc, charargv[])  
  7. {  
  8.     int nNum 10;                                  //定义一个变量  
  9.     OutputNumber(nNum); //调用OutputNumber函数  
  10.     cout << nNum << endl;   //输出变量值  
  11.     return 0;  

指针传递

  1. void OutputNumber(int *pNumber) //使用指针作为函数参数  
  2.     
  3.     cout << *pNumber << endl;      //输出参数值  
  4.     *pNumber 20;                  //设置参数值  
  5. }  
  6. int main(int argc, charargv[])  
  7. {  
  8.     int nNum 10;      //定义一个整型变量  
  9.     OutputNumber(&nNum);    //调用OutputNumber函数  
  10.     cout << nNum << endl;   //输出nNum  
  11.     return 0;  

输出结果是一样的:10 20


在编写函数时,如果函数需要采用引用方式传递,使用指针和引用作为参数类型都是可以的。使用指针和引用类型作为函数参数各有优缺点,视具体环境而定。对于引用类型,引用必须被初始化为一个对象,并且不能使它再指向其他对象,因为对引用赋值实际上是对目标对象赋值。这是引用类型的缺点,但也是引用类型的优点,因为在函数调用时需要验证引用参数的合法性。例如,如果函数OutputNumber采用引用参数类型,则语句"OutputNumber(0);"是非法的。如果函数OutputNumber采用指针类型参数,则语句"OutputNumber(0);"是合法的。因为0被认为是一个空指针,对空指针操作必然会导致地址访问错误。因此对于指针对象作为函数参数,函数体中需要验证指针参数是否为空。这是使用指针类型作为函数参数的缺点。但是,使用指针对象作为函数参数,用户可以随意修改指针参数指向的对象,这是引用类型参数所不能的。另外的区别就是上面的调用时用法的区别了了。引用时只需要传递值就行,但是指针的话需要传递地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值