c++学习笔记(四):函数按指针调用和按引用调用

C++函数按指针调用


通过传递函数参数拷贝参数的地址到形式参数的指针方法的调用。函数的内部的地址是用来访问调用中使用的实际参数。这意味着,对参数的更改会影响传递的参数。

传递指针的值,参数指针传递给函数就像任何其他的值。所以,相应的需要声明函数的参数为指针类型,如在以下函数swap(),从而改变了两个整型变量的值指向它的参数。

// function definition to swap the values.
void swap(int *x, int *y)
{
   int temp;
   temp = *x; /* save the value at address x */
   *x = *y; /* put y into x */
   *y = temp; /* put x into y */
  
   return;
}

要了解更详细的关于C++指针,请检查C++指针的篇章。

现在,让我们调用函数swap()通过指针,如下面的例子传递值:

#include <iostream>
using namespace std;

// function declaration
void swap(int *x, int *y);

int main ()
{
   // local variable declaration:
   int a = 100;
   int b = 200;
 
   cout << "Before swap, value of a :" << a << endl;
   cout << "Before swap, value of b :" << b << endl;

   /* calling a function to swap the values.
    * &a indicates yiibaier to a ie. address of variable a and 
    * &b indicates yiibaier to b ie. address of variable b.
    */
   swap(&a, &b);

   cout << "After swap, value of a :" << a << endl;
   cout << "After swap, value of b :" << b << endl;
 
   return 0;
}

当上述代码放在同一个文件中,编译和执行时,它产生了以下结果:

Before swap, value of a :100
Before swap, value of b :200
After swap, value of a :200
After swap, value of b :100


C++函数引用调用

通过传递函数参数拷贝参数的参考成形式参数的参考方法调用。函数内部的参考用于访问在调用中使用的实际参数。这意味着,对参数的更改会影响传递的参数。

要通过引用传递的价值,参数引用传递给函数就像任何其他的值。所以,相应的,需要声明函数的参数为引用类型如下面的函数swap(),它的交换两个整型变量的值指向它的参数。

// function definition to swap the values.
void swap(int &x, int &y)
{
   int temp;
   temp = x; /* save the value at address x */
   x = y;    /* put y into x */
   y = temp; /* put x into y */
  
   return;
}

现在,让我们调用函数swap()通过引用作为在下面的示例中传递值:

#include <iostream>
using namespace std;

// function declaration
void swap(int &x, int &y);

int main ()
{
   // local variable declaration:
   int a = 100;
   int b = 200;
 
   cout << "Before swap, value of a :" << a << endl;
   cout << "Before swap, value of b :" << b << endl;

   /* calling a function to swap the values using variable reference.*/
   swap(a, b);

   cout << "After swap, value of a :" << a << endl;
   cout << "After swap, value of b :" << b << endl;
 
   return 0;
}

当上述代码放在同一个文件中,编译和执行时,它产生了以下结果:

Before swap, value of a :100
Before swap, value of b :200
After swap, value of a :200
After swap, value of b :100


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值