21xrx.com
2025-03-28 04:58:14 Friday
文章检索 我的文章 写文章
C++指针交换操作
2023-07-02 04:48:30 深夜i     18     0
C++ 指针 交换操作

在C++中,指针是一种非常重要的数据类型。它们允许我们直接访问内存中的地址,以便更有效地操作数据。当我们在编写代码时需要同时操作两个或多个指针时,交换它们的值是常见的操作。这种操作通常称为指针交换。

指针交换的方法非常简单。我们只需要创建一个临时指针,然后将它指向其中一个指针所指向的地址。接着把另一个指针所指向的地址赋给第一个指针,并将临时指针指向的地址赋给第二个指针,即可完成指针交换操作。

以下是一个基本的指针交换示例:

void swap(int* ptr1, int* ptr2) {
  int* temp = ptr1; // 创建一个临时指针,指向ptr1指向的地址
  ptr1 = ptr2; // 将ptr2指向的地址赋给ptr1
  ptr2 = temp; // 将临时指针指向的地址赋给ptr2
}
int main() {
  int num1 = 1, num2 = 2;
  int* ptr1 = &num1, *ptr2 = &num2;
  cout << "Before swapping:" << endl;
  cout << "num1 = " << num1 << ", num2 = " << num2 << endl;
  cout << "ptr1 = " << ptr1 << ", ptr2 = " << ptr2 << endl;
  swap(ptr1, ptr2);
  cout << "After swapping:" << endl;
  cout << "num1 = " << num1 << ", num2 = " << num2 << endl;
  cout << "ptr1 = " << ptr1 << ", ptr2 = " << ptr2 << endl;
  return 0;
}

运行该程序后,将输出以下结果:

Before swapping:
num1 = 1, num2 = 2
ptr1 = 0x61fe0c, ptr2 = 0x61fe08
After swapping:
num1 = 1, num2 = 2
ptr1 = 0x61fe08, ptr2 = 0x61fe0c

可以看到,当我们在swap()函数中交换指针ptr1和ptr2的值之后,虽然num1和num2的值也发生了变化,但它们的指针地址并没有改变。

需要注意的是,当我们在C++中传递指针参数时,我们实际上是传递了指针所指向的地址。在swap()函数中执行指针交换操作时,我们只是修改了指针所指向的地址,而不是指针本身。

  
  

评论区

请求出错了