首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在C++中交换指针的地址

在C++中,交换指针的地址可以通过使用指向指针的指针来实现。以下是一个简单的示例:

代码语言:cpp
复制
#include<iostream>
using namespace std;

void swap(int **x, int **y) {
    int *temp = *x;
    *x = *y;
    *y = temp;
}

int main() {
    int a = 10, b = 20;
    int *p1 = &a, *p2 = &b;

    cout << "Before swapping: p1 = " << p1 << ", p2 = " << p2 << endl;
    swap(&p1, &p2);
    cout << "After swapping: p1 = " << p1 << ", p2 = " << p2 << endl;

    return 0;
}

在这个示例中,我们定义了一个名为swap的函数,它接受两个指向指针的指针作为参数。然后,我们在main函数中定义了两个整数变量ab,以及两个指向这些变量的指针p1p2。我们将这些指针的地址传递给swap函数,该函数将它们的值交换。

输出将显示交换后的指针地址:

代码语言:txt
复制
Before swapping: p1 = 0x7ffee0588d6c, p2 = 0x7ffee0588d68
After swapping: p1 = 0x7ffee0588d68, p2 = 0x7ffee0588d6c

这个示例演示了如何在C++中交换指针的地址。请注意,这里没有涉及到云计算或任何其他特定领域的知识。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++C++ this 指针用法 ① ( C++ this 指针引入 | this 指针用法 | 代码示例 )

一、C++ this 指针 1、C++ this 指针引入 C++ , this 指针 是一个特殊指针 , 由系统自动生成 , 不需要手动声明定义 , 每个 非静态成员函数... , 都可以调用 this 指针 ; this 指针 是指向 调用对象 自身 指针 , 也就是调用 该成员函数 实例对象 内存地址 ; 由于 this 指针只能在 非静态成员函数内部使用..., 因此 this 指针是类内部使用指针 , 使用 this 可以访问 实例对象 所有 公有 public / 保护 protected / 私有 private 成员 ; 2、C++...this 指针用法 C++ this 指针用法 : 使用 this 作为指针 : 非静态成员函数 , 直接使用 this 作为 本实例对象 指针 ; this 使用 this-> 访问成员变量...访问成员变量 : 非静态成员函数 , 直接使用如下语法 , 访问 本实例对象 非静态成员变量 ; 先获取指针指向数据 然后访问数据成员变量 ; (*this).成员变量名 C++

23220

C++this指针本质

一直以来对C++this不理解,只知道构造函数,如果构造函数参数和类成员名字一样的话,就可以用this指针来区分,如: this->a = a; 一直以来都有这个疑问:this究竟是什么?...从刚才代码,我们用”this->”而不是”this.”就说明this是一个指针,而我们知道,C、C++指针就是地址,因此很容易想到,this也是一个地址。但是问题来了,this是谁地址呢?...我们看下面这个很简单C++程序: #include class A { public: A(); }; A::A() { std::cout << "this...::endl; } int main() { A a; std::cout << "&a " << &a << std::endl; return 0; } 大家先在自己脑袋运行一下这个程序...我们可以看到,this和&a结果是一样。由此可以看出,this就是a地址,而a是类A一个对象,占用了sizeof(A)内存空间。

73630

浅析C++this指针

this作用域是类内部,当在类非静态成员函数访问类非静态成员时候,编译器会自动将对象本身地址作为一个隐含参数传递给函数。...看call 3那行C++代码汇编代码就可以看到this指针跟一般函数参数区别:一般函数参数是直接压入栈(push 0Dh),而this指针却被放到了ecx寄存器。...非成员函数如果要用到类成员变量,就可以通过访问ecx寄存器来得到指向对象this指针,然后再通过this指针加上成员变量偏移量来找到相应成员变量。...4已经说明,eax寄存器内存放是this指针,而this指针指向连续存放int型成员变量m_iValue1。this指针加4(sizeof(int))也就是成员变量m_iValue2地址。...通过上面的分析,我们可以从底层了解了C++this指针实现方法。虽然不同编译器会使用不同处理方法,但是C++编译器必须遵守C++标准,因此对于this指针实现应该都是差不多

72310

c++ this指针详解

大家好,又见面了,我是你们朋友全栈君。 this 是 c++一个关键字,也是一个常量指针,指向当前对象,也就是当前对象地址。通过this指针,可以访问当前对象成员变量和成员函数。...只有非静态成员函数才可以使用this指针 所谓的当前对象,就是正在使用对象,例如stu.print(); stu 就是当前对象,系统正在访问stu成员函数print() 假设this指向stu...对象地址是否相同: void Student::printAddr() { cout << this << endl; } 接着main函数输出创建对象并调用函数: int main()...,它并不出现在参数列表,调用成员函数时,系统(编译器)自动获取当前对象地址,并赋给this,完成参数传递。...C++函数编译原理和成员函数实现》讲到,成员函数最终被编译成与对象无关普通函数,除了成员变量,会丢失所有信息,所以在编译时要在成员函数添加一个额外参数,把当前对象地址传入,以此来关联成员函数和成员变量

50150

C++指针用法汇集

1、指向对象指针   定义:对象空间起始地址就是对象指针。   ...说明:在建立对象时,编译系统就为每个对象分配一定存储空间以存放其成员,不过注意,在一般情况下不同对象数据存储单元存放数据成员是不相同,而不同对象函数代码却是相同,也就是说,它们函数代码是共享...这时我们可以定义一个指针变量用来存放对象指针。   ...定义指向类对象指针变量一般形式是:   类名 *对象指针名;   如对于与个Time类对象,我们可以有: Time t; Time *p; p=&t;   我们就可以通过对象指针访问对象和对象成员...指向对象成员函数gettime(),相当于t.gettime()   也可以用如下形式: p->hour 和 p->gettime()和上面是等价

11410

指针函数作用

传递地址 指针传递地址时,指针变量产生了副本,但副本与原变量所指内存区域是同一个。对指针副本指向变量进行改变,就是改变原指针变量所指向变量。 指向函数指针 指针变量也可以指向一个函数。...从函数返回指针 当我们定义一个返回指针类型函数时,形式如下: int *fun(参数列表) { ……; return p; } p是一个指针变量,它可以是形式如&value地址值。...当函数返回一个指针变量,我们得到地址值。值得注意是,返回指针内存内容并不随返回地址一样经过复制成为临时变量。如果操作不当,后果将难以预料。...指针数组 数组元素均为指针变量数组称为指针数组,一维指针数组定义形式为: 类型名 *数组名 [数组长度]; 类如: int *p[4]; 指针数组数组名也是一个指针变量,该指针变量为指向指针指针...指针数组元素可以使用指向指针指针来引用。

2.8K20

C++指针变量作函数参数接收数组地址

C++指针变量作函数参数接收数组地址 C++,用指针变量指向数组元素时要注意: 指针变量p可以指向有效数组元素,实际上也可以指向数组 以后内存单元。...C++,将+和--运算符用于指向数组元素指针变量十分有效,可以使指针变量自动向前或向后移动,指向下一个或上一个数组元素。...在上一节小林已经讲过:数组名代表数组首元素地址,用数组名作函数参数,传递是数组首元素地址,同样用指针变量作函数形参, 也可以接收从实参传递来数组首元素地址。 ...C++实际,函数调用时并不存在一个占有存储空间形参数组,只有指针变量。...函数调用开始时,它接收了实参数组首元素地址,但在函数执行期间,它可以再被赋值。 8.2 C++指针变量作函数参数接收数组地址 更多案例可以go公众号:C语言入门到精通

9142218

【小白学习C++ 教程】七、C++指针声明和指针相关概念

不同数据类型指针之间唯一区别是指针指向变量或常量数据类型。 C++ 使用指针 象征 名称 描述 &(与号) 地址运算符 确定变量地址。 ∗(星号) 间接运算符 访问地址值。...cout << "访问指针可用地址值:"; cout << *ip << endl; } 具体输出如下 变量Var值: 5 变量Var存储地址ip: 0x61fe14...访问指针可用地址值:5 请注意,0x0相当于0....以下是 C++ 程序员应该清楚几个重要指针概念 - 指针 说明 空指针 C++ 支持空指针,它是几个标准库定义零值常量。...将指针传递给函数 通过引用或通过地址传递参数都允许被调用函数调用函数更改传递参数。 从函数返回指针 C++ 允许函数返回指向局部变量、静态变量和动态分配内存指针

38320

C++this指针使用方法.

this指针仅仅能在一个类成员函数调用,它表示当前对象地址。...#3:this指针怎样传递给类函数?绑定?还是函数參数首參数就是this指针.那么this指针又是怎样找到类实例后函数? this是通过函数參数首參数来传递。...this指针调用之前生成。类实例后函数,没有这个说法。类实例化时,仅仅分配类变量空间,并没有为函数分配空间。自从类函数定义完毕后,它就在那儿,不会跑。...C++,类和结构是仅仅有一个差别的:类成员默认是private,而结构是public。 this是类指针,假设换成结构,那this就是结构指针了。...,因此是能够取地址 ///this指针创建对象前创建. this指针放在栈上,在编译时刻已经确定.

1.2K20

C++this指针理解和用法

个人理解: (ps:class类就好比这座房子,this就好比一把钥匙,通过钥匙来打开了这座房子门,那么里面的东西就随意你取用了) this是指向实例化对象本身时候一个指针,里面存储是对象本身地址...,通过该地址可以访问内部成员函数和成员变量。...非静态成员函数,编译器在编译时候加上this作为隐含形参,通过this来访问各个成员(即使你没有写上this指针)。...例如a.fun(1)fun(&a,1) this使用:1)非静态成员函数返回对象本身时候,直接用return *this(常用于操作符重载和赋值、拷贝等函数)。...,即将point1对象地址传递给了this指针 b.编译器编译后原型应该是void MovePoint(Point *this, int a, int b) c.函数体可以写成{this->x

63930

详解c++指针指针指针引用

展示一下使用指针指针指针引用修改传递给方法指针,以便更好使用它。...(这里说指针指针不是一个二维数组) 为什么需要使用它们 当我们把一个指针做为参数传一个方法时,其实是把指针复本传递给了方法,也可以说传递指针指针值传递。...如果我们方法内部修改指针会出现问题,方法里做修改只是修改指针copy而不是指针本身,原来指针还保留着原来 值。...输出是两个2 使用指针指针 展示一下使用指针指针做为参数 void func(int **p) { *p = &m_value; // 也可以根据你需求分配内存 *p...我们看一下 func(int **p)这个方法 p:  是一个指针指针,在这里我们不会去对它做修改,否则会丢失这个指针指向指针地址 *p:  是被指向指针,是一个地址

1.3K60

C++this指针

大家好,又见面了,我是你们朋友全栈君。 C++this指针 当你进入一个房子后, 你可以看见桌子、椅子、地板等, 但是房子你是看不到全貌了。...C++初始化对象时,每个对象数据成员都会得到系统分配自己独立存储空间。...对于成员函数来说,一个函数代码段在内存只有一份,同一个类不同对象调用自己成员函数时,,它们其实调用是同一段函数代码。...5、只有非静态成员函数才可以使用this指针, 其它任何函数都不可以。 6、this指针时刻指向对象 。 7、当this指针指向空时,是不会指向对象。...非静态成员函数,编译器在编译时候加上this作为隐含形参,通过this来访问各个成员(即使你没有写上this指针)。

54620

C++ extern 数组和指针

一次使用 extern 声明全局变量过程,因为数组和指针混用引发了错误。 我们知道,C++ 中使用 extern 来声明在其他(未使用 include 包含)文件全局变量。...现在问题是这样一个 a.cpp ,有个全局变量 char a[] = "......"; 另一个 b.cpp ,我想使用这个全局变量,由于固有的思想,指针和数组名通用,偷懒写成了如下形式: extern char *a; 由此引发了一个 `segmentation fault...### extern 问题 知道了上述区别,再来看 `extern` 声明全局变量内部实现: > 被 extern 修饰全局变量不被分配空间,而是链接时候到别的文件通过查找索引定位该全局变量地址...这里问题就出现了:由于在这个文件声明 a 是一个指针变量而不是数组,链接器行为实际上是把指针 a 自身地址定位到了另一个 .c 文件定义数组首地址之上,而不是我们所希望把数组地址赋予指针

18900

详解 C++ 11 智能指针

C/C++ 语言中,内存泄露问题一直困扰着广大开发者,因此各类库和工具一直努力尝试各种方法去检测和避免内存泄露,如 boost,智能指针技术应运而生。...正因为 std::auto_ptr 设计存在如此重大缺陷,C++11 标准充分借鉴和吸收了 boost 库智能指针设计思想,引入了三种类型智能指针,即 std::unique_ptr、std:...C++ 新标准各种智能指针是如此实用与强大,现代 C++ 项目开发,读者应该尽量去使用它们。...A* m_pA; }; 同样道理,头文件当使用智能指针对象作为类成员变量时,也应该优先使用前置声明去引用智能指针对象包裹类,而不是直接包含包裹类头文件。...); ~Test(); private: std::unique_ptr m_spA; }; C++ 新标准智能指针我想介绍就这么多了,Modern C/C++ 已经变为 C

2.6K31

C++设计和使用智能指针

为一个C++用户。使用指针可以算上是常态,但在使用过程。多时间,可能是由于new要么malloc对象,上次忘记释放结束(我会犯这样一个错误)。内存泄露。...而此时智能指针可能能够帮助我去解决问题。 智能指针(smart pointer)是利用个引用计数策略去处理指针释放,从而保证指针安全性。...通常情况下,我们会自己去设计一个智能指针类去管理自己指针对象。 事实上其原理是存储指向动态分配指针对象类。通过引用计数功能去控制,去正确实现指针对象销毁,从而避免内存泄露。...SmartPtrt2(t1); SmartPtrt3(new Stub); t3=t2; t1->print(); (*t3).print(); return 0; } 面的代码...函数析构时候,我们会发现引用计数在当中所起到作用,从而避免误操作早成指针提前释放。造成指针悬挂。或者释放不彻底,造成内存泄漏问题。 版权声明:本文博客原创文章。博客,未经同意,不得转载。

36430

初识指针指针指针变量、如何理解地址指针类型意义、void*指针、野指针、空指针)(笔记)

指针所指向内存区: 函数调用时就会创建一个栈桢,栈桢内存被划分为一个一个单元, 其中每个内存单元能存放8个比特位(一个字节),每个单元也有一个编号。...2.32位平台下地址是32个bit,指针变量大小是4个字节 64位平台下地址是64个bit,指针变量大小是8个字节 三、如何理解地址: 计算机硬件单元要互相协同工作(协同:互相进行数据传递...计算机编址,并不是把每个字节地址记录下来, 而是通过硬件设计完成。...依此类推,32根地址线,就能表示2^32种含义,每一种含义都代表一个地址地址信息被下达给内存,在内存上,就可以找到该地址对应数据, 将数据通过数据总线传入CPU内寄存器。...使用空指针进行解引用操作会导致程序崩溃,因为没有任何有效内存地址可供访问。C语言中,空指针主要用于表示指针变量没有指向任何有效内存地址,例如未初始化指针变量或已释放内存块。

7610
领券