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

C - (ptr = =&ptr)什么是*ptr?

在C语言中,ptr表示指针ptr所指向的内存地址中存储的值。这里的是一个解引用运算符,用于获取指针所指向的内存地址中的值。

例如,假设有一个整数指针ptr,指向一个整数变量x,那么*ptr就是变量x的值。

代码语言:c
复制
int x = 10;
int *ptr = &x;
int value = *ptr; // value 等于 10

在这个例子中,ptr是一个指向整数的指针,它指向变量x的内存地址。*ptr获取ptr所指向的内存地址中的值,即变量x的值,并将其赋给value。

需要注意的是,解引用一个未初始化或悬空指针会导致未定义行为,可能会导致程序崩溃或出现其他错误。

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

相关·内容

C++的智能指针unique_ptr、shared_ptr和weak_ptr

C++的智能指针一种特殊的指针类型,它能够自动管理内存资源,避免常见的内存泄漏和多次释放等问题。C++11引入了三种主要的智能指针:unique_ptr、shared_ptr和weak_ptr。...①unique_ptrC++中,unique_ptr一个智能指针(smart pointer)类模板,用于管理动态分配的内存资源,它提供了自动释放内存的功能。...②shared_ptrC++中,shared_ptr一个智能指针(smart pointer)类模板,用于管理动态分配的内存资源。...③weak_ptrC++ 中,weak_ptr 一种智能指针(smart pointer),用于解决循环引用问题。...循环引用问题的实际场景可能两个对象之间存在双向关联,比如A对象持有shared_ptr指向B对象,而B对象也持有shared_ptr指向A对象。

87520

C++ 智能指针(unique_ptr, shared_ptr)的源码分析

在博文https://blog.csdn.net/qq_27717921/article/details/82940519已经介绍了unique_ptr和shared_ptr的使用,但是这两类的智能指针如何做到管理指针的呢...=0xd232455f, 暂存在tmp,*(tmp.use_c) 和 *(p.use_c) 都等于2, 这个地方拷贝构造弯沉后已经完全相同了,为什么还有调用swap操作, 为了递减赋值号左侧对象的use_c...void test() { shared_ptr> t (new vector); /// t相关的操作 /// } *(t.use_c)=1, t局部变量,保存在栈内存上...这里,pvector* 类型,会调用deleter(p),而vector栈变量,直接delete掉就可以。除了释放p,还要释放use_c, 并将use_c和p 等于nullptr。...的头文件,拷贝构造函数和=操作符重载函数delete.这也就说明unique_ptr中不能进行直接拷贝和赋值操作。

2.7K32
  • shared_ptr 和 unique_ptr 深入探秘

    C++ 中 shared_ptr 和 unique_ptr  C++11 之后被广泛使用的两个智能指针,但是其实他们在使用上还是有一些“秘密”的,我根据平时遇到的两个问题,总结记录一些知识。...为什么 unique_ptr 需要明确知道类型的析构函数这个问题我写 unique_ptr 调试接口的时候才注意到的,之前确实不知道。为什么会这样呢?...首先我们必须要知道 unique_ptr 到底封装了什么?...继续深挖一下,这个问题会出现在 shared_ptr 吗?答案不会。这又引入了另一个问题,shared_ptr 和 unique_ptr 的封装有什么不同?...C++ 标准并没有规定这些实现细节,但是规定函数签名和特性的时候,考虑着比较合理的实现方式来写标准的,到最后标准落下来之后也差不多只能这么实现了。

    43610

    【Example】C++ 标准库智能指针 unique_ptr 与 shared_ptr

    C 样式编程的一个主要 bug 类型内存泄漏。 泄漏通常是由于为分配的内存的调用失败引起的 delete new。 现代 C++ 强调“资源获取即初始化”(RAII) 原则。 其理念很简单。...unique_ptr 没有拷贝构造函数,因此不能用于赋值。该指针最常用的情况单例模式和编译防火墙的封装。...和 unique 不同的,它允许自身对象(shared_ptr)被复制,复制出来的 shared_ptr 所托管的指针都指向同一块内存空间。... nn = make; shared_ptr mm = make; nn->end = mm; mm->start = nn; 为什么呢?...因为 share_ptr 强引用,强引用是只要被引用的对象还存活那么这个引用也一定会存在。 而 weak_ptr 弱引用,弱引用是虽然对象还活着,但是这个引用则可有可无。

    1.1K20

    从零开始学C++之boost库(一):详解 boost 库智能指针(scoped_ptr 、shared_ptr 、weak_ptr 源码分析)

    如果你的C++基础比较好,可以想到拷贝构造函数跟构造函数一样,如果有对象成员需要先构造对象成员的(这一点 也可以从调用堆栈上看出),故可以在shared_count 类的拷贝构造函数设置断点,然后就可以跟踪进去...总结一下: 和前面介绍的boost::scoped_ptr相比,boost::shared_ptr可以共享对象的所有权,因此其使用范围基本上没有什么限制(还是有一些需要遵循的 使用规则,下文中介绍)...}; } 上面出现了 && 的用法,在这里并不是逻辑与的意思,而是C++ 11中的新语法,如下解释: && is new in C++11, and it signifies that the function...,涉及到两种智能指针,跟踪起来难度很大,我也没什么心情像分析 shared_ptr 一样画多个图来解释流程,这个例子需要解释的代码远远比shared_ptr 多,这里只是解释怎样使用,有兴趣的朋友自 己去分析一下...参考 : C++ primer 第四版 Effective C++ 3rd C++编程规范 http://www.cnblogs.com/TianFang/

    1.3K30

    从零开始学C++之boost库(一):详解 boost 库智能指针(scoped_ptr 、shared_ptr 、weak_ptr 源码分析)

    本想跟踪shared_ptr 的拷贝构造函数,在当行设置断点后F11直接跳过了,说明shared_ptr类没有实现拷贝构造函数,使用的编译器默认的拷 贝构造函数,那如何跟踪呢?...如果你的C++基础比较好,可以想到拷贝构造函数跟构造函数一样,如果有对象成员需要先构造对象成员的(这一点 也可以从调用堆栈上看出),故可以在shared_count 类的拷贝构造函数设置断点,然后就可以跟踪进去...总结一下: 和前面介绍的boost::scoped_ptr相比,boost::shared_ptr可以共享对象的所有权,因此其使用范围基本上没有什么限制(还是有一些需要遵循的 使用规则,下文中介绍)...因为此例子涉及到循环引用,而且类成员引用着另一个类,涉及到两种智能指针,跟踪起来难度很大,我也没什么心情像分析 shared_ptr 一样画多个图来解释流程,这个例子需要解释的代码远远比shared_ptr...参考 : C++ primer 第四版 Effective C++ 3rd C++编程规范 http://www.cnblogs.com/TianFang/

    1.6K00

    C++】智能指针:shared_ptr

    二、特性 shared_ptr 有两个特性: 特性1: 对raw pointer进行了一层封装,让C++程序员不用在担心何时去释放分配好的内存。...思想:该类型智能指针在实现上采用的引用计数机制,即便有一个 shared_ptr 指针放弃了堆内存的“使用权”(引用计数减 1),也不会影响其他指向同一堆内存的 shared_ptr 指针(只有引用计数为...默认构造函数分配的空指针 constructor with object Foo... 2 // sh2 和sh3指向的都是同一个内存,所以他们的引用计数都是2 2 ~Foo... constructor...= std::make_shared (10); // same as: make_shared推荐的用法,因为它会一次性将raw pointer和引用计数的内存同时分配好 std.../shared_ptr/ https://en.cppreference.com/w/cpp/memory/shared_ptr http://c.biancheng.net/view/7898.html

    2.4K20

    C++一分钟之-智能指针:unique_ptr与shared_ptr

    智能指针C++中用于自动管理内存的工具,它们通过模拟拥有所有权的对象来防止内存泄漏,其中unique_ptr和shared_ptr最常用的两种类型。...unique_ptr与shared_ptr概览unique_ptrunique_ptr表示独占所有权的智能指针,同一时间内只能有一个unique_ptr指向给定的资源。...常见问题与易错点误用unique_ptr共享资源尝试复制unique_ptr会导致编译错误,因为它是独占所有权的。试图通过值传递或赋值方式分享unique_ptr管理的资源错误的。...C++智能指针家族中的两大支柱,它们各自适用于不同的场景。...通过了解它们的工作原理、识别常见问题和易错点,并采取相应的避免策略,开发者可以更加高效地利用智能指针的强大功能,构建高质量的C++应用程序。

    72910

    C++ 温习笔记(3) - auto_ptr,string

    auto_ptr 利用特点“栈上对象在离开作用范围时会自动析构”。 对于动态分配的内存,其作用范围程序员手动控制的,这给程序员带来了方便但也不可避免疏忽造成的内存泄漏,毕竟只有编译器最可靠的。...而在a的析构函数中会自动释放p的空间,而该析构函数编译器自动调用的,无需程序员操心。 auto_ptr用法: 1. 需要包含头文件memory。 2....Constructor:explicit auto_ptr(X* p = 0) throw(); 将指针p交给auto_ptr对象托管。 3....Copy constructor:auto_ptr(const auto_ptr&) throw(); template auto_ptr(const auto_ptr& a) throw(); 指针的托管权会发生转移...string1.insert(1, string2);//s3456tring2 cout << string1 << endl; string1.insert(0, 5, 'c'

    41310

    X86 Assemble指令--ptr

    Assemble指令中标识大小 在Assemble中通常会看到WORD ptr或者DWORD ptr或者BYTE ptr等关键字,这些关键字主要用来标识指令操作数的大小(或者说长度) WORD ptr...:标识该操作数为1个字 DWORD ptr:标识该操作数为2个字 BYTE ptr:标识该操作数为1个字节 基础知识 1 BYTE = 8 bits 1 WORD = 2 BYTE 1 DWORD...= 2 WORD 举例 and dword ptr [ebp-4], 0 ebp为栈指针的基址指针,总是指向当前方法栈的最底部,当函数返回后,该寄存器中的指针才会返回。...由于只是指出了目的操作数的内存基址,但是没有指出寄存器到底要操作一个BYTE,还是一个WORD,还是DWORD,所以需要加上dword ptr来表示进行与操作的时候,读取从ss:ebp-4的位置到ss:...参考资料 What does "dword ptr" mean? In assembly, what does "PTR" stand for?

    70820

    PTR解析记录理解与用途

    $访问主机.'.crawl.baidu.com') return false; } 百思不得解 其中 gethostbyaddr 怎么来的,什么原理。...今天了解了PTR解析记录才明白怎么一回事。 ---- 平常解析域名用的最多的应该就是A(AAAA)/CNAME类型了,其他的很少用到,也很少了解到。今天就说一下 我对PTR记录的理解。...百度百科中写到: PTR (Pointer Record),指针记录,电子邮件系统中的一种数据类型,被互联网标准文件RFC1035所定义。与其相对应的A记录、地址记录。二者组成邮件交换记录。...所以可以粗糙的理解为, PTRA记录的反向,可以通过IP地址查到对应的域名记录。而拥有这个权限的ISP(互联网服务提供商),只有向ISP申请才能实现PTR解析。...---- 有了这个 就可以查询到底真的蜘蛛还是假的蜘蛛啦。

    2.7K30

    智能指针入门 auto_ptr

    所谓智能指针,就是可以随便申请而无需管理自动释放,就像 java 或 C# 的垃圾回收机制一样。我们无需关心销毁只管尽情的申请,系统提供了一个 auto_ptr 类可以使用这样的功能。...后面我们也会用简单的代码示例介绍 auto_ptr 内部如何实现的。...(int argc, char* argv[]) { foo(); return 0; } 以上代码运行后,如下图: 从图中我们可以看到,我们只做了申请操作,而并未对new出来的指针进行销毁,为什么会打印类...return 0; } 实际看完代码你可以发现,我们利用了函数压栈和出栈时将栈上对象弹出后调用析构函数的逻辑,让栈上的对象 SPA 在出栈的时候自动调用析构函数将类 A 所申请的内存销毁掉,这样绝妙的手段真的难以想想...,C++奥妙无穷,后面你会看到更多好玩的东西。

    15820

    实现一个strong_rc_ptr(非线程安全版本的std::shared_ptr)

    背景 我们的新项目有个比较复杂的全区全服交易行系统,其中搜索和推荐高实时性全区服多维度排序的,并且要支持比较复杂的标签交集查询和属性范围查询的自由组合。...这也同时带来的影响每当订单有变化时它都有可能会去刷新大量的索引。我们早期第一版直接用 std::shared_ptr 来维护订单信息。...enable_shared_from_this 的两种实现 接下来 enable_shared_from_this 的实现。...虽然说这部分可能未定义行为,但是我觉得 std::shared_ptr 的行为大部分场景下更符合直觉。...未来规划 之前实现 libcopp 对C++20协程支持的时候也有几处内部生命周期引用的地方计划中后续改成无Cache Miss的版本的,后续看有空也改造一下吧。也是能减少一些不必要的内部开销。

    9210
    领券