dereference相关内容
只是进入C ++。当我看到乘法符号( * )被用于表示变量的取消引用时,我会不断地被抛弃。 例如: unsigned char * pixels = vidgrabber.getPixels(); 这会抛弃别人吗? 谢谢。 pps我有另一个相当简单的问题,没有得到回答:(这里: 解决方案 C和继承C ++,被操作符淹没,并且内在上下文敏感。你必须习惯它: 如
..
我对某些代码运行cppcheck以查找可能的运行时错误。并且它报告一个可能的空指针引用以下情况: Foo * x = ... // defined somewhere ... Foo * y(x); //可能的空指针解引用。 编辑:更好的示例 for(int i = 0; i { Foo * x(ArrayOfObjsContainingFo
..
C ++中的隐式解引用到底是什么意思?是否意味着当我把一个变量的引用传递给一个函数参数我不需要&在前面使用它的值? 解决方案 我假设你的教学试图解释指针和引用之间的区别。 将引用指向隐式取消引用的指令是相对常见的(但在技术上并不准确)。 int x = 5; int * xP =& x; int& xR = x; xR = 6; //如果你认为一个引用是一
..
C ++中的隐式解引用到底是什么意思?是否意味着当我把一个变量的引用传递给一个函数参数我不需要&在前面使用它的值? 解决方案 我假设你的教学试图解释指针和引用之间的区别。 将引用指向隐式取消引用的指令是相对常见的(但在技术上并不准确)。 int x = 5; int * xP =& x; int& xR = x; xR = 6; //如果你认为一个引用是一
..
我很难在C ++中使用std :: string :: iterators。这个代码编译良好(仍然没有得到正确的输出,但这是我的错:TODO,修复算法)在Dev-C ++,我不会得到运行时错误。错误是在Visual Studio Express 2008 C ++,其中我得到一个错误指向:“Expression:string iterator not dereferencabl
..
我不知道这是否是一个正确的编程问题,但它是一直困扰我的东西,我想知道我是否是唯一的。 当初始学习C ++时,我理解引用的概念,但指针让我困惑。你为什么问? 请考虑以下内容: void foo(int * bar) { } int main() { int x = 5; int * y = NULL; y =& x; * y = 15; fo
..
可能的重复: C ++:ptr-> hello(); / * VERSUS * /(* ptr).hello(); Too坏我不能google这个... 有人可以解释或指向我在哪里可以找到这两者之间的区别?我理解*是一个解引用运算符,什么关于 - >?有什么区别? 解决方案 a-> b 糖为(* a).b 唯一的特殊情况是对象 - > 当在对象上使用 - >时调用。
..
我想了解指针如何工作,所以我创建了这个小程序。首先我创建一个p指针,指向一个char。 第一个问题是这一点。如果我创建一个指针,它的值是一个memoryaddress(如果我指向一个非指针对象),但这次是“哈哈”在我的例子。为什么它在char *中以这种方式工作?我怎么可以通过cin >> p增加价值? 我的第二个问题是,我创建了一个q char,它在我创建它的点上具有* p指针的值。
..
所有这一次,我认为当你做类似ObjectA.field1的时候,ObjectA就像栈上的任何值,你基本上访问它的字段。现在我正在通过一个关于OOP语言的类的笔记,意识到当你做ObjectA.field1实际发生是HEAP(AddressA的ObjectA)(field1),它返回你field1的值。这使我有点困惑。谁能告诉为什么有一个查找,虽然我们已经有对象的价值?希望我能够解释.. 解决方
..
我有一个简单的智能指针实现,如下面的代码片段1所示。和第二个片段中名为Dummy的虚拟测试类。代码片段3显示了我们如何利用这个简单的智能指针访问函数foo()。 我的问题是关于我们通过使用 - >运算符调用类Dummy中的函数foo()的方式。 - >运算符已经返回一个指向原始指针的指针。所以,我认为,为了使我们能够调用函数foo(),我们需要对返回的原始指针执行第二 - >操作。然而,许多
..
我想知道是否可以这样做: unsigned int address = 0x0001FBDC; //随机地址:P int value = * address; //地址的引用 意思是,可以获得内存中特定地址的值吗? 感谢 解决方案 #include uintptr_t p = 0x0001FBDC; in
..
解引用一个指针并将其传递给一个函数,它通过引用创建一个对象的副本。 解决方案 在这种情况下,指针的值被复制(虽然这不一定是优化器可以优化它的情况)。 int val = * pPtr;在这种情况下,不会发生复制: b int& rVal = * pPtr; 没有复制发生的原因是因为引用不是机器码级别构造。它是一个更高级别的
..
如果我在C ++中有一个向量的指针: vector * vecPtr; 我想访问一个向量元素,然后我可以通过dereferncing vector: int a =(* vecPtr)[i]; 但是这个解引用实际上是否会在栈上创建一个我的向量的副本?让我们说向量存储10000个int,将通过解除引用vecPtr 10000 int被
..
性能之间或之间有任何差异: ptr-> a 和 (* ptr).a(); ? 解决方案 因为你在评论中要求它。您可能正在寻找的内容可以在标准(5.2.5类成员访问)中找到: 3如果E1具有类型“指向类 X“的指针,那么表达式E1-> E2是 转换为等价形式 (*(E1))E2; 编译器将生成完全
..
标准说,取消引用空指针会导致未定义的行为。但是什么是“空指针”?在下面的代码中,我们称之为“空指针”: struct X { static X * get(){return reinterpret_cast(1); } void f(){} }; int main() { X * x = 0; (* x).f(); //空指针? (1) x =
..
我刚刚开始C ++。除了我对返回类型的赋值和取消引用运算符感到困惑之外,所有都很好。我跟着这本书C ++ Primer。在各种情况下,作者说返回类型的赋值操作符是指左手操作数的类型,但后来,他说返回类型是左手操作数的类型。我已经参考C ++ 11标准秒。 5.17,其中返回类型被描述为“左值引用左手操作数”。 同样,我不知道dereference是否返回指向的对象,对对象的引用。 这些
..
int * 如果我实际上没有访问取消引用的“对象” p = 0; int& r = * p; // undefined? int * q =& * p; // undefined? 一个更实用的示例:我可以取消引用空指针来区分重载吗? void foo(Bar&); void foo(Baz&); foo(*(Bar *)0); // undef
..
我在学习C ++指针,并且 - > 操作符对我来说很奇怪。而不是 ptr-> hello(); 可以写(* ptr).hello(); 是这种情况还是有什么区别? 解决方案 - >运算符只是语法糖,因为(* ptr).hello )是要输入的PITA。对于在ASM级别生成的指令,没有区别。事实上,在一些语言(D的想法),编译器根据类型计算一切。如果你做 ptr.hello(),它只
..
有任何方法来检查一个迭代器(无论是从向量,列表,deque ...)是(仍然)dereferencable,即没有被无效? 我一直使用尝试 - catch 示例:(不起作用) list l; for(i = 1; i l.push_back(i * 10); } itd = l.begin(); itd ++; if(something){
..
快速和简单的问题。我有点明白了命名空间别名预选赛做什么,它是在一个命名空间访问成员,但是所以没有对其操作。我真的感到困惑,在这种情况下,为什么要使用一个比其他或不同的,他们每个如何完成同样的事情。 使用colAlias System.Collections中=; 命名空间myns名字 { 类TestApp { 静态无效的主要() { colAlias.Hashtabl
..