草庐IT

Pointers

全部标签

c++ - int * i 和 int** i 的区别

int*i和int**i有什么区别? 最佳答案 指向整数值的指针int*i指向指向整数值的指针int**i(即,在第二种情况下,您需要两次解引用才能访问整数的值) 关于c++-int*i和int**i的区别,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3794236/

c++ - 您如何在托管代码环境之外安全地进行编程?

如果您使用C或C++进行编程,没有内存管理、类型检查或缓冲区溢出保护等托管语言优势,而是使用指针算法,您如何确保您的程序安全?您是否使用了很多单元测试,或者您只是一个谨慎的编码人员?你还有其他方法吗? 最佳答案 以上都是。我使用:非常谨慎尽可能使用智能指针测试过的数据结构,很多standardlibrary始终进行单元测试内存验证工具,例如MemValidator和AppVerifier每天晚上祈祷它不会在客户网站上崩溃。其实,我只是在夸大其词。如果您正确地构建代码,那么保持对资源的控制并不算太糟糕,实际上也并不难。有趣的笔记。我有

c++ - 如何存储对象供以后使用并使它们可搜索

目前,每次创建一个对象时,我都使用一个vector来存储指向该对象的指针,但这感觉有点傻。可能有更好的方法,但我还没有找到。WhatI'mdoing:Exampleusage:Theproblem:IfIwanttoretrieveacertainDateIhavetogooverallitemsinthevectortoseeifRecPaymentsStack.stackDatematchesthedatetheuserrequested.TheRecPaymentStackisactuallycompletelyuselessatthemomentbecausewhatIshou

c++ - 变量引用和名称之间的区别

我正在研究c++的引用,现在我对变量名和引用之间的区别感到很困惑。测试代码如下:classTestClass{private:intnum;public:TestClass(intn):num(n){coutnumnum所以现在我在制作对象时有两个选项,它们是互斥的。在我的理解中,如果我使用options2,编译器会在堆栈内存中创建一个临时对象并将引用值返回给t2。如果这是正确的,我该如何表达或解释选项1?似乎在堆栈内存中创建了同一个对象,计算机为该对象命名为“t2”,但我不清楚这个option1与option2因为变量名和引用有些混淆。此外,交替切换选项,我可以看到在每种情况下对象都

c++ - std::thread constructor 传递指针和传递ref有区别吗?

创建调用成员函数的线程时,传递当前类的指针和传递引用有区别吗?从下面的示例中,方法1的行为是否与方法2相同?有什么区别吗?classMyClass{public:MyClass(){};~MyClass(){};voidmemberFunction1(){//method1std::threadtheThread(&MyClass::memberFunction2,this,argumentToMemberFunction2)//method2std::threadtheThread(&MyClass::memberFunction2,std::ref(*this),argumentT

c++ - 查询内存位置

假设有一个变量a和一个指向a地址的指针p。inta;int*p=&a;现在因为我有一个指向变量位置的指针,所以我知道确切的内存位置(或内存块)。我的问题是:给定一个地址,我们能找到哪个变量在使用它们吗?(我认为这是不可能的)。给定一个地址,我们至少可以找到该内存地址所属的内存块有多大。(我知道这很愚蠢,但仍然如此)。 最佳答案 您可以枚举所有(可疑的)变量并检查它们是否指向与您的指针相同的位置(例如,您可以比较指针是否相等)如果您的指针定义为int*p,您可以假设它指向一个整数。当然,您的假设可能会被证明是错误的,例如,如果指针值为

c++ - 用于绘制 C/C++ 结构、指针等的快速草图工具

我想知道您使用什么来描绘C/C++中不同实体之间的关系。这可能是一个非常广泛的问题,所以我将尝试进一步澄清我的问题并举一个例子。我正在寻找对用户来说足够简单的东西,让我以一种非正式的方式轻松地勾勒出容器、指针等。目的是记录一些结构关系以将它们传递给初级开发人员。查看图纸应该可以加快对代码的理解。此时我的解决方案是使用:1)纸和铅笔。2)MicrosoftPowerPoint/Word自选图形。3)免费软件直径。其他的可能是:4)MicrosoftVisio,但我公司没有许可证。5)UML工具。我不想走这条路。这就是我所说的更正式的解决方案。我知道像RationalRose这样的工具是x

c++ - 在 C++ 中将指针变量分配给 const int?

我想知道是否有人可以向我解释以下内容:如果我写inti=0;float*pf=i;我得到一个编译错误(gcc4.2.1):error:invalidconversionfrom‘int’to‘float*’有道理——它们显然是两种完全不同的类型。但是如果我写constinti=0;float*pf=i;它编译没有错误。为什么“const”应该在赋值的右侧有所不同?“const”关键字的想法不是能够对常量值强制类型约束吗?我能想到的任何解释都感觉像是假的。而且我的解释都没有解释这个事实constinti=1;float*pf=i;编译失败。谁能解释一下? 最佳

c++ - 如何访问 std::list 的第一个元素?

我有一个列表std::list*l;.此列表不为空且具有一些值。我的问题是如何正确访问项目?我不需要遍历列表。我只想要第一个项目。std::list::iteratorit=l->begin();if(it!=l->end()){//accessingTintvalue=(*it)->value();//Isthissafe?}或者我还应该检查null吗?if(it!=l->end()&&(*it)){//accessingTintvalue=(*it)->value();} 最佳答案 如果你被迫使用std::listmyList;

c++ - 使用单个删除运算符删除多个指针

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion我们使用delete[]删除元素数组。是否可以按照我下面的方式删除指针?ClassA*object=newClassA();ClassA*pointer1=object;ClassA*object2=newClassA();ClassA*pointer2=object2;deletepointer1,pointer2;为什么不能用这种方式删除?[编辑]我可以这样说吗,上面的删除没有实现的缺