C++ 引用调用、指针调用、传值调用(非常方便理解)


参考:http://t.csdnimg.cn/TsXoF

1、C++ 引用调用

引用可以看成是一种特殊类型的变量可以被认为是另一个变量的别名,就好比人的绰号一样,虽然名字不同;
就好比诸葛亮与诸葛孔明是同一个人,改变诸葛亮的值就等同于改变诸葛孔明的值。

案例:

#include <iostream>
using namespace std;
 
// 函数声明
void swap(int &诸葛孔明);
 
int main ()
{
   // 局部变量声明
   int 诸葛亮 = 100;
 
   cout << "交换前,诸葛亮的值:" << 诸葛亮 << endl;

 
   /* 调用函数来交换值 */
   swap(诸葛亮);
 
   cout << "交换后,诸葛亮的值:" << 诸葛亮 << endl;
 
   return 0;
}

// 函数定义
void swap(int &诸葛孔明)//意思是int &诸葛孔明 = 诸葛亮,建立一个int型的引用诸葛孔明,并将其初始化为变量诸葛亮的一个别名诸葛孔明
{
   int temp = 200;
   诸葛孔明 = temp; /* 把 temp的值赋值给诸葛孔明  */
   					/* 诸葛孔明是诸葛亮的引用,或者说是别名,所以改变诸葛孔明的值,就是改变诸葛亮的值  */
  
   return;
}

输出:

交换前,诸葛亮 的值:100
交换后,诸葛亮 的值:200

2、C++ 指针调用

向函数传递参数的指针调用方法,把参数的地址复制给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。

int *x=&a //把a的地址传给x

案例:

#include <iostream>
using namespace std;

// 函数声明
void swap(int *x, int *y);

int main ()
{
   // 局部变量声明
   int a = 100;
   int b = 200;
 
   cout << "交换前,a 的值:" << a << endl;
   cout << "交换前,b 的值:" << b << endl;

   /* 调用函数来交换值
    * &a 表示指向 a 的指针,即变量 a 的地址 
    * &b 表示指向 b 的指针,即变量 b 的地址 
    */
   swap(&a, &b);

   cout << "交换后,a 的值:" << a << endl;
   cout << "交换后,b 的值:" << b << endl;
 
   return 0;
}


// 函数定义
void swap(int *x, int *y)
{
   int temp;
   temp = *x;    /* 保存地址 x 的值 */
   *x = *y;        /* 把 y 赋值给 x */
   *y = temp;    /* 把 x 赋值给 y */
  
   return;
}

输出:

交换前,a 的值: 100
交换前,b 的值: 200
交换后,a 的值: 200
交换后,b 的值: 100

3、C++ 传值调用

向函数传递参数的传值调用方法,把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数。

int x=a ; 函数里面x的值变了但是a并没有变

案例:


#include <iostream>
using namespace std;
 
// 函数声明
void swap(int x, int y);
 
int main ()
{
   // 局部变量声明
   int a = 100;
   int b = 200;
 
   cout << "交换前,a 的值:" << a << endl;
   cout << "交换前,b 的值:" << b << endl;
 
   // 调用函数来交换值
   swap(a, b);
 
   cout << "交换后,a 的值:" << a << endl;
   cout << "交换后,b 的值:" << b << endl;
 
   return 0;
}


// 函数定义
void swap(int x, int y)
{
   int temp;
 
   temp = x; /* 保存 x 的值 */
   x = y;    /* 把 y 赋值给 x */
   y = temp; /* 把 x 赋值给 y */
  
   return;
}



输出:

交换前,a 的值: 100
交换前,b 的值: 200
交换后,a 的值: 100
交换后,b 的值: 200

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值