草庐IT

Pointers

全部标签

c++ - const 指针的 vector ?

这个问题在这里已经有了答案:DoesC++11allowvector?(5个答案)关闭7年前。以下不编译(非常详细的错误,但基本上是“不能重载”和“从‘constvoid*’到‘void*’的无效转换”)。我能理解为什么例如push_back()可能无法编译,因为你不能复制/移动到Foo*const,但为什么不能编译:#includeusingnamespacestd;classFoo;intmain(){vectorvec;}

c++ - 我如何定义一个模板类来给出类型的指针深度/级别?

我如何定义一个模板类,它提供一个整数常量,表示作为输入模板参数提供的(指针)类型的“深度”?例如,如果类名为Depth,则以下内容为真:Depth::value==3Depth::value==0 最佳答案 templatestructpointer_depth_impl{enum{value=0};};templatestructpointer_depth_impl{enum{value=pointer_depth_impl::value+1};};templatestructpointer_depth{enum{value=po

c++ - 从没有参数的函数返回整数数组

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:ReturninglocaldatafromfunctionsinCandC++viapointer我需要创建一个不带参数的返回数组的函数我收到错误:“警告:函数返回局部变量的地址”为了便于阅读,我的代码已经过简化int*getNums(){intnums[8];nums={1,2,3,4,5,6,7,8};returnnums;}我被引导明白当函数结束时指针丢失了,但是数组仍然会被发送吗?如果不是,在函数调用中返回这个不带参数的整数数组的好方法是什么?提前感谢您的帮助!干杯

c++ - 获取指针的地址

抱歉,我知道有上百万个关于指针、数组等的问题。虽然这是最基本的问题,但我似乎找不到任何指向(哈哈!)答案的东西。我有一个初始化为指向一block内存的指针,我知道我可以像访问数组一样访问此内存:char*mMem=newchar[5000];cout这实际上是:char*mMem=newchar[5000];cout不过我不明白的是如何获取元素的地址-我知道考虑到mMem不是数组,元素不是一个正确的词-如果我的理解是正确的,但不能太确定,因为似乎每个站点在涉及指针和数组时都使用它想要的任何词。所以,如果我有:char*mMem=newchar[5000];cout为什么运营商的地址不能

c++ - std::move 是否使指针无效?

假设如下:templateclassPipeline{[...]voidconnect(OutputSidefirst,InputSidesecond){Queuequeue;first.setOutputQueue(&queue);second.setInputQueue(&queue);queues.push_back(std::move(queue));}[...]std::vector>queues;};move后指向队列的指针在“first”和“second”中是否仍然有效? 最佳答案 Doesstd::moveinval

C++:结构会被正确复制吗?

我有一个指向结构的指针,我需要实现一个方法来复制结构的所有内存内容。一般来说,我需要执行结构的深拷贝。结构如下:typedefstruct{Size2fspriteSize;Vertex2f*vertices;GLubyte*vertex_indices;}tSprite;下面是我实现的应该复制结构的方法:tSprite*copySprite(consttSprite*copyFromMe){tSprite*pSpriteToReturn=(tSprite*)malloc(sizeof(*copyFromMe));memcpy(pSpriteToReturn,copyFromMe,si

c# - C++中指针和C#中引用类型的区别

在C++中,指针是指向存储另一个变量的内存地址的指针,在C#中,引用在某种程度上是相同的。这两者有什么区别? 最佳答案 在C#中,引用类型将在不再需要时自动被垃圾回收。 关于c#-C++中指针和C#中引用类型的区别,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2146202/

c++ - 显式设置指针的值

我正在编写一个mex文件(使用C++),它将接受内存地址作为输入,并对位于该内存地址的数据进行操作。因为我被迫使用MATLAB作为我的环境,所以我的程序只能接受MATLAB数据类型作为输入(char、bool、float、double和int)。我怎样才能将我的输入值分配给一个指针?伪代码://Outsideofprogram//doubleinput_arg=hex2dec('00C2E4E8')double*pointer;pointer=(double*)input_arg;//pointer==hex2dec('00C2E4E8')基本上,这可以看作是我对类似于以下内容的指针的

C++,制作指向字符数组的指针

在C++中,我有一个char数组定义为:charminiAlphabet[]={'A','B','C','D','E','\0'};我想从其他函数修改这个数组的值而不将它传递给那些函数。这是您使用指针的地方吗?所以我的问题是什么是指向这个char数组的指针的正确方法。我是否可以只创建一个指向第一个元素的指针,然后当我想修改值时,我会遍历内存直到我到达结束字符? 最佳答案 charminiAlphabet[]={'A','B','C','D','E','\0'};这些是等价的。char*p1=miniAlphabet;char*p2=

c++ - 为什么衰减到数组参数的指针似乎不适用于 sizeof()?

我之前读过一个问题,由于与此完全相同而被关闭Whenafunctionhasaspecific-sizearrayparameter,whyisitreplacedwithapointer?和Howtofindthe'sizeof'(apointerpointingtoanarray)?但读完这篇文章后,我仍然对sizeof()的工作原理感到困惑。我知道将数组作为参数传递给函数,例如voidfoo(inta[5])将导致数组参数衰减为指针。我在上述2个问题链接中没有找到关于为什么sizeof()函数本身免于(或至少看似免于)这种指针衰减行为的明确答案。如果sizeof()的行为与任何其