21xrx.com
2024-12-23 00:21:40 Monday
登录
文章检索 我的文章 写文章
C++指针交换操作
2023-07-02 04:48:30 深夜i     --     --
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()函数中执行指针交换操作时,我们只是修改了指针所指向的地址,而不是指针本身。

  
  

评论区

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