21xrx.com
2024-12-23 01:10:37 Monday
登录
文章检索 我的文章 写文章
C++中swap函数是传值还是传指针?
2023-06-23 12:34:08 深夜i     --     --
C++ swap函数 传值 传指针

在C++中,swap函数既可以传值也可以传指针。实际上,C++中有许多不同的swap函数实现,并且它们的参数类型也是不同的。

如果要使用传值的swap函数,其参数类型应该是引用或者值类型。例如,以下代码演示了一个传值的swap函数的实现:


#include <iostream>

using namespace std;

void swap(int a, int b)

b=" << b << endl;

int main()

{

  int x = 1, y = 2;

  swap(x, y);

  cout << "In main function: x=" << x << ", y=" << y << endl;

  return 0;

}

执行上述代码,输出结果会是:


In swap function: a=2, b=1

In main function: x=1, y=2

由于参数是按值传递的,因此在函数内部交换了a和b的值,但是在main函数中x和y的值却没有改变。

另外,如果要使用传指针的swap函数,其参数类型应该是指针或者引用类型的指针。例如,以下代码演示了一个传指针的swap函数的实现:


#include <iostream>

using namespace std;

void swap(int* a, int* b)

{

  int temp = *a;

  *a = *b;

  *b = temp;

  cout << "In swap function: a=" << *a << ", b=" << *b << endl;

}

int main()

{

  int x = 1, y = 2;

  swap(&x, &y);

  cout << "In main function: x=" << x << ", y=" << y << endl;

  return 0;

}

执行上述代码,输出结果会是:


In swap function: a=2, b=1

In main function: x=2, y=1

由于参数是按指针传递的,因此在函数内部通过指针改变了a和b的值,导致main函数中x和y的值也跟着改变了。

总之,无论是传值还是传指针,swap函数的实现方法都不是固定的,而要根据实际需求和参数类型来决定。如果需要交换的是一个指针类型或一个大型对象,使用传指针更高效。如果要交换的是一个基本类型或小型对象,使用传值更简单。

  
  

评论区

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