21xrx.com
2024-11-10 00:40:34 Sunday
登录
文章检索 我的文章 写文章
C++传值调用的原理及应用
2023-07-05 00:24:54 深夜i     --     --
C++ 传值调用 原理 应用

C++是一种非常流行的编程语言,其支持多种类型的函数参数传递方式,其中传值调用是最常见的一种方式。本文将介绍C++传值调用的原理及其应用。

C++传值调用原理

在C++中,函数调用时,参数的值会被拷贝到函数的形式参数中。这意味着函数的形式参数是由实参的值初始化的。在函数内部,形式参数的值可以随时修改,但这并不会影响实参的值,因为它们存储在不同的内存位置中。

例如,下面的代码演示了传值调用的用法:


#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 = y;  

  y = temp;

 

  return;

运行结果如下:

交换前,a 的值:100

交换前,b 的值:200

交换后,a 的值:100

交换后,b 的值:200

可以看到,虽然在swap函数内部成功交换了x和y的值,但是在函数外部a和b的值并没有发生改变,这是因为传值调用只是传递参数的值,不会影响到函数外面的变量。

C++传值调用应用

传值调用在C++中是非常常见的,因为它是一种简单而且易于理解的参数传递方式。除了上面提到的交换两个变量的值这种简单应用,我们还可以把传值调用运用到多种场合中。

1.传递基本数据类型

传值调用适用于传递基本数据类型,如int、float、char等。

例如,我们可以使用以下代码求两个数的和:


#include <iostream>

using namespace std;

int add(int x, int y);

int main()

{

  int a = 100;

  int b = 200;

  int c;

  c = add(a, b);

  cout << "和是:" << c << endl;

  return 0;

}

int add(int x, int y)

{

  return x + y;

}

运行结果如下:

和是:300

2.传递数组

在C++中,传递数组使用传值调用是非常方便的。

例如,以下代码演示了一个获取数组元素平均值的函数:


#include <iostream>

using namespace std;

double getAverage(int arr[], int size);

int main ()

{

  int balance[5] = 50;

  double avg;

  avg = getAverage( balance, 5 ) ;

  cout << "平均值是:" << avg << endl;  

  return 0;

}

double getAverage(int arr[], int size)

{

  int i;

  double avg;

  double sum = 0;

  for (i = 0; i < size; ++i)

  {

   sum += arr[i];

  }

  avg = sum / size;

  return avg;

}

运行结果如下:

平均值是:214.4

3.传递结构体

在C++中,传递结构体也可以使用传值调用。

例如,以下代码演示了一个获取矩形面积的函数,其中矩形结构体Rect包含宽和高属性:


#include <iostream>

using namespace std;

struct Rect

  int width;

  int height;

;

int getArea(Rect r);

int main()

{

  Rect r = 10;

  int area;

  area = getArea(r);

  cout << "矩形面积是:" << area << endl;

  return 0;

}

int getArea(Rect r)

{

  return r.width * r.height;

}

运行结果如下:

矩形面积是:50

C++传值调用的原理和应用在本文中已经详细介绍,传值调用在C++中使用得非常广泛,尤其适用于传递基本数据类型、数组和结构体等。在应用传值调用时,需要注意函数内部修改的变量值不会影响到函数外部的变量值。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复