草庐IT

指针认证

全部标签

c++ - 将迭代器取消引用到临时范围时出现非指针操作数错误

使用autoempty_line=[](auto&str){returnstr.size()==0;};我们可以这样做:autoline_range_with_first_non_empty=ranges::view::drop_while(ranges::getlines(std::cin),empty_line);autoinput1=std::stoi(*line_range_with_first_non_empty.begin());我们也可以这样做:autoline_range2=ranges::getlines(std::cin);autoiter2=ranges::fin

c++ - 为动态分配的指针数组的所有元素赋值?

我有一个包含两个元素的指针数组(ptrArr1)。我希望动态分配指针数组。我可以很好地为指针数组的第一个元素分配地址,但我不知道如何为指针数组的第二个元素分配地址。我不想使用任何STL或其他预编码函数。我正在做这个练习来增强我对指针的理解。谢谢。intmain(){intone=1;inttwo=2;int*ptrArr1=newint[2];ptrArr1=&one;ptrArr1[1]=&two;//doesnotworkptrArr1+1=&two;//doesnotworkdelete[]ptrArr1;return0;} 最佳答案

C++:二维数组中的指针令人困惑

谁能给我解释一下这是怎么回事?考虑代码#includeintmain(){intA[2][2]={{0}};std::cout(Trythecodehere!)在我看来,A应该是一个包含2个指向数组的指针的数组,每个数组都应该包含2个指向int的指针。但是,在运行代码时,以下内容会写入标准输出:0x7a665507cf800x7a665507cf800对我来说,这使得A中第一个元素的内存地址(打印在第一条stdout行上)与中第一个元素的内存地址相同*一个。这怎么可能,考虑到A和*A显然是两个不同的数组(因为取消引用A和*A给出不同的结果)?输出的另一种解释是内存地址0x7a66550

c++ - 将从唯一指针移动到共享指针也会初始化 enable_shared_from_this

当我继承std::enable_shared_from_this,但是我创建了一个unique_ptr,std::enable_shared_from_this里面的weak_ptr也会被初始化吗当我通过std::move或移动构造函数“移动”到shared_ptr时?例如下面的代码会发生什么:#include#includeclassA:publicstd::enable_shared_from_this{public:std::shared_ptrgetA(){returnshared_from_this();}};intmain(){std::unique_ptru(newA()

c++ - 构造指针类型的 std::set 是否有效?

我想将一些指针存储到std::set中,但标准指南说它是无效的。Iftwopointerspandqofthesametypepointtodifferentobjectsthatare>notmembersofthesameobjectorelementsofthesamearrayortodifferent>functions,orifonlyoneofthemisnull,theresultsofpq,pp>=qareunspecified.看起来运算符不受朴素指针类型的支持,如下所示。Object*a=newObject;Object*b=newObject;a==b;//va

c++ - std::unique_ptr 是否在其析构函数中将其基础指针设置为 nullptr?

在实现我自己的unique_ptr时(只是为了好玩),我发现它不能通过这个testfile来自libstdcxx:structA;structB{std::unique_ptra;};structA{B*b;~A(){VERIFY(b->a!=nullptr);}};voidtest01(){Bb;b.a.reset(newA);b.a->b=&b;}gccpasses愉快地测试这个文件(当然,这个文件来自libstdcxx),而clangfails对于VERIFY部分。问题:它是依赖于实现还是未定义的行为?我想这个后置条件(b->a!=nullptr)对gcc很重要,否则它不会有测试

c++ - 指向指针问题的指针

我有一个带有指向接口(interface)对象(我们称之为pInterface)的(非智能)指针的类,我正在构建一个也需要访问该接口(interface)的嵌套类。我将通过将指向接口(interface)的指针传递给嵌套类的构造函数来解决这个问题,如下所示:CNestedClasssomeClass(pInterface,...);但是我不确定将此指针存储在嵌套类中的最佳方式。我可以使用:1)Ascoped(orothersmart)pointer(totheoriginalobject)2)Apointertoapointer你们有什么建议,为什么?编辑:我应该澄清一下——嵌套类将需

java - 您对C、C++和Java中的指针、引用和句柄有何深刻理解?

您对C、C++和Java中的指针、引用和句柄有何深刻理解?我们通常把指针、引用和句柄放在特定的语言层面上去思考,像我这样的新手很容易搞混。其实java中的那些概念,只是对指针的一种封装。所有的指针只是对主存地址的一种封装。所以所有这些,只是一个封装的诡计。以上都是我个人的一瞥。你的理解是什么?欢迎与我分享。 最佳答案 每种语言在这方面都有差异。在C中,只有指针是保存内存地址的变量。在C中,您可以使用指针算法在内存中移动,如果您有一个数组,您可以获得指向第一个元素的指针并通过递增指针来导航内存。Java引用类似于指针,因为它们引用内存

C++ 比较成员函数指针

在C++中,是否可以为指向成员函数的指针定义排序顺序?似乎operatorclassA{public:voidTest1(){}voidTest2(){}};intmain(){void(A::*constone)()=&A::Test1;void(A::*consttwo)()=&A::Test2;boolequal=one==two;//Equalityworksfine.boolless=one谢谢! 最佳答案 函数指针在C++中不具有关系可比性。支持相等比较,除非至少有一个指针实际指向虚拟成员函数(在这种情况下结果未指定)。

c++ - 误解函数指针——将其作为参数传递

我想通过函数指针作为参数将类A的成员函数传递给类B。请告知这条路是否通向某处,并帮助我填补坑洞。#includeusingnamespacestd;classA{public:intdosomeA(intx){cout这段精彩的代码给我留下了编译器错误:cannotconvertint(A::*)(int)'toint(*)(int)'ininitialization首先我想让它编译。其次,我不希望dosomeA是静态的。 最佳答案 指向成员的指针不同于普通的函数指针。由于编译器错误表明&A::dosomeA的类型实际上是int(A