草庐IT

Pointers

全部标签

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++ - 如何检查某个内存地址是否可用于 C++?

我正在用C++开发我的爱好项目,并且想测试不同类型变量的连续内存分配(例如具有不同类型变量的数组)。如何检查特定内存地址是否可用?更多详情:假设我们有以下代码:我们有一个整数int_var,(这个变量位于哪个内存地址并不重要),以便分配不同类型的变量在int_var地址之后的地址中,我需要检查该地址是否可用,然后使用它。我尝试了以下代码:intint_var=5;float*flt_ptr=(float*)(&int_var+(sizeof(int_var)/sizeof(int)));//checkifflt_ptrissuccessfullyallocatedif(flt_ptr)

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

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

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++ - 将值从 char 指针复制到 char 数组

我有一个指针*ip_address_server保存服务器的ip地址:in_addr*address=(in_addr*)record->h_addr;char*ip_address_server=inet_ntoa(*address);很明显,当我使用printf打印它的值时,它打印得很好。printf("paddress%s",ip_address_server);但是现在如果我声明一个大小为20的数组来保存该值,那么我需要将内容从指针复制到该数组。charhost_name[20];为了复制我使用了for循环的值。但是我后来打印的值不是正确的值。for(inti=0;ip_add

c++ - 有人可以帮我理解这个吗?整数 * & pr

这个问题在这里已经有了答案:Whatdoes*&meaninafunctionparameter(5个答案)关闭9年前。我在期末考试中发现了这个:inta=564;int*pa=&a;int*&pr=pa;cout根据多选答案,代码有效,并显示a的值。但我对第3行的计算和优先级感到困惑。C的操作顺序表明*和&具有相同的顺序。那么,它会是int*(&pr)吗?这怎么能用语言来形容呢?谢谢。

c++ - 从 C++ 函数返回指针的推荐方法?

我有一个传递给一系列函数的指针,其中一个函数返回一个地址并将该地址分配给指针。在Stackoverflow上寻求帮助后,collect_file_path方法有一个类型为QStringList**的参数。虽然我明白这是怎么回事,但我在我拥有的任何教科书中都没有遇到过这种符号,而且它看起来很难看。我想要一些关于其他程序员如何实现我在下面的代码中所做的事情的建议/反馈。您会使用QStringList**还是其他方法?我希望我问的是有道理的。我当前的代码是:voidThreadWorker::run(){QStringList*file_list;collect_file_paths(&fi

c++ - 可以在地址 0 分配一个有效的指针吗?

在任何“主要平台”(出于这个问题的目的,我将其定义为Windows、Mac和Linux)上,是否可以将有效分配的指针分配到程序地址空间中的地址0(因此弄乱了与NULL的比较?)该标准甚至允许编译器/平台在地址0处进行有效分配吗? 最佳答案 C++标准允许这样做,但这样的指针不会与文字0(NULL指针常量)进行比较。但是,主要操作系统中的用户模式应用程序永远不会有一个位于0的有效指针,甚至在-65536到65535范围内(以帮助检测NULL指针的偏移量)。在大多数情况下,0作为可用地址只存在于嵌入式系统中,很少出现在PC操作系统的内核

c++ - 我应该使用指向 std::string 的指针吗

在学习c++时,我首先使用Qt库,而不是标准的C++、STL等等(好吧,所以我是c++的新手,被Qt宠坏了)。在Qt上,QString使用隐式共享,这样我就可以将它复制分配给另一个变量,例如:QStringvar1=QString("Hithere!");QStringvar2=var1这会做得很好,没有太多开销。但是现在,我正在尝试std::string所以,我应该这样做吗std::stringvar1=std::string()或std::string*var1=newstd::string()另外,QVector和std::vector怎么样。如果我确实必须使用指针……有什么提示