草庐IT

Pointers

全部标签

c++ - 有人可以向我澄清这个数组/指针的想法吗?

为了解释数组只是指向我们类(class)的指针(在C++中),我的教授向我们展示了这个:array[5]//cout'ingthis*(array+5)//wouldreturnthesamevalueasthis我在完全理解它时遇到了一些麻烦。这是我的想法:array是第一个位置的地址,因此如果我们将5添加到该地址,我们将在内存中移动5个地址。指针运算符从内存位置提取数据。这是正确的想法吗?这个想法对我来说仍然是模糊的,只是觉得我不完全理解它。我想听听别人的解释可能会帮助我更好地理解它。提前致谢! 最佳答案 你的想法是正确的。数组

c++ - 在同一指令中引用和取消引用

在翻阅LLVM源代码时,我偶然发现了这行代码MachineInstr*MI=&*I;我是c++的新手,引用和指针之间的区别对我来说很模糊,我认为它与这种区别有关,但这个操作对我来说毫无意义。有人对此有解释吗? 最佳答案 I的类型可能是某种迭代器或智能指针,它具有一元operator*()重载以产生MachineInstr&.如果你想获得一个指向被I引用的对象的内置指针,你可以使用*I获得对该对象的引用,然后你获取这个引用的地址,使用&*I。 关于c++-在同一指令中引用和取消引用,我们在

c++ - 标准文本文件是否以 NULL 结尾?

我正在编写一个C++程序,它读取一个文件,然后将它作为字符数组发送到另一个类。因为字符数组只通过指针传递,所以所有大小都丢失了。它将读取的文件将是一个文本文件。文本文件是否终止?我最好不想使用Vector,因为我真的不需要它的任何功能,只需要数组的大小。 最佳答案 没有。文件的长度已知,因此不需要任何终止字节。 关于c++-标准文本文件是否以NULL结尾?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

c# - 如何从 C# 访问将指针作为输入参数的 C++ 函数

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Runtime.InteropServices;namespacePatternSequencer{classVersion{publicstringmajorVersion;publicstringminorVersion;ushort*pmajorVersion;ushort*pminorVersion;ulongstatus;[DllImport(@"c:\DOcuments\Myapp.dll",Ca

c++ - std::copy 用于动态分配的指针

这可能是一个非常新手的问题。我正在处理的类(我们称之为MyClass)包含以下变量intnbins;double*bins;//=newdouble[nbins+i]因为我正在实现一个复制构造函数MyClass(constMyClass&source)我需要复制source.bins。我打算使用algorithm中的std::copy,但我发现的所有示例都展示了如何复制静态数组,如doublebins[]=。..或标准数据结构,如std::vector。我找不到任何示例,其中std::copy用于像double*bins=newdouble[nbins+i]这样的指针。所以,我的问题是

c++ - 指针参数和数组参数有区别吗?

void方法(double*v)void方法(doublev[5])这两者有什么区别吗?第二个是否更具体,如v中的长度被限制为5个元素? 最佳答案 当声明为参数类型时,数组会退化为指针类型。在你的例子中,voidmethod(doublev[5]);这里5根本没有任何作用,它是如此的微不足道以至于你可以完全省略它,而是写成这个:voidmethod(doublev[]);这与前面的声明完全相同。由于衰减成指针,所以上面两个完全一样:voidmethod(double*v);//becausearraydecaystopointer,

c++ - 如何编辑随机内存?

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion我要买一台新电脑,所以我和一个friend决定,我们想用我们电脑的内存来玩俄罗斯轮盘赌。一般前提是我们在内存中随机取一个位置并将其分配给一个随机值,然后看看谁的计算机故障/崩溃最快或最差。我所做的一切都不是一个好主意,因此不安全的做法是被接受的,甚至在这里受到鼓励。这是我目前所拥有的:#include#include#include//usepreprocessortoavoidlosingthi

c++ - 为什么以及何时通过指针在 C++ 中传递类类型?

考虑以下代码:classAbstract{public:virtualvoidprintStuff()=0;};classDerived:publicAbstract{public:voidprintStuff(){printf("Stuff\n");}};现在,假设我想创建一个使用抽象类中的printStuff方法的函数。在我了解到在C++中只有一种方法是可能的之前,我认为会有两种方法:一种不太明显的指针,一种更明显的方法,类似于您期望对int、char等做的事情:voidptr_function(Abstract*abs){//non-obviousabs->printStuff(

C++将函数指针分配给另一个

我想做一个存储函数指针的类,但是当我想将它们存储在成员变量中时,我得到了这个错误:invaliduseofmemberfunction(didyouforgetthe'()'?)¿我的错误在哪里?classButton{public:Button(PS3USB*ps3,ButtonEnumbutton,void(*onPress)(void)=nullptr,void(*onRelease)(void)=nullptr){PS3=ps3;status=false;ERROR--->onPressFunction=onPress;onReleaseFunction=onRelease;g

c++ - C++ 中的 void(*) 有什么意义吗?

我正在尝试理解C++函数指针语法。当我在Linux上的Eclipse中键入:void(*);它用一条消息说语法错误突出显示了该语句,但它让我编译它并且程序运行了。然后在VisualStudio上我试了一下,它不会编译,说“预期的表达式”。然而奇怪的是,当我这样做时:std::vectormyVector;它在VisualStudio上编译良好。还有一些在线编译器void(*);它自己工作正常。我知道:void(*)();...是一个函数指针并且..void();...是一个函数签名,这就是为什么你可以这样做:std::functionfunc;我在理解函数指针语法时遇到了很多麻烦。谢谢