【问题标题】:"ptr = ptr - > next" What does this "->" mean? (C++) [duplicate]“ptr = ptr -> next” 这个“->”是什么意思? (C++)[重复]
【发布时间】:2012-03-24 14:52:29
【问题描述】:

可能重复:
What can I use instead of the arrow operator, ->?
What does -> mean in C++?

所以我目前正在学习有关数据结构和算法开发的 C++ 考试。在查看我的老师的幻灯片时,我注意到他经常使用这个“->”。我不确定这意味着什么?它真的是你可以在 C++ 中执行的命令吗?

示例 1

addrInfo *ptr = head;
while (ptr->next != NULL) 
{
        ptr = ptr->next;
}   
// at this point, ptr points to the last item

示例 2

if( head == NULL )
{
head = block;
block->next = NULL;
}

【问题讨论】:

  • 只是附加注释,-> 运算符称为“指向成员的指针”运算符。我不知道为什么这么多人没有给它起名字。

标签: c++ pointers linked-list


【解决方案1】:

它是取消引用和成员访问的组合。这个ptr->next 等价于(*ptr).next

【讨论】:

    【解决方案2】:

    -> 运算符引用一个指针,并从中检索超出以下名称指示的点的内存索引。因此:

    struct foo {
       int bar;
       int baz;
    };
    
    struct foo something;
    struct foo *ptr = &something;
    
    ptr->bar = 5;
    ptr->baz = 10;
    

    在上面,ptr 值将是something 结构的内存位置(这就是& 所做的:找到something 的内存位置)。然后ptr 变量随后被-> 运算符“取消引用”,因此ptr->bar 内存位置(一个int)设置为5,ptr->baz 设置为10。

    【讨论】:

      【解决方案3】:

      它正在取消引用指针。它的意思是“给我指向存储在ptr 的地址的东西的值”。在此示例中,ptr 指向一个列表项,因此 ptr->next 返回对象的 next 属性的值。

      【讨论】:

        【解决方案4】:

        -> 运算符专门是一个结构解引用。在block->next 中,它正在调用指针block 指向的对象的成员变量next。有关 C++ 中成员和指针运算符的列表,请参见 this 页。

        基本上,它与block.next 做同样的事情,block 是一个对象而不是一个指针。

        【讨论】:

          【解决方案5】:

          -> 是指针的运算符。用于访问成员的指针。

          如果你看一下“addrInfo”的定义,你可以找到成员“next”。

          否则,可以看下面的例子:

          struct student
          {
          int num;
          }
          struct student stu;
          struct student *p;
          p=&stu;
          

          这三个操作是相等的: 1. stu.num 2. (*P).num 3. p->数量

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-04-09
            • 2013-03-05
            • 1970-01-01
            • 2014-07-11
            • 2018-10-31
            • 2013-08-13
            • 2014-03-02
            • 1970-01-01
            相关资源
            最近更新 更多