“ptr = ptr - > next”这是什么“ - >”意思? (C ++)

时间:2012-03-07 03:23:28

标签: c++ pointers linked-list

  

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

所以我目前正在攻读有关数据结构和算法开发的C ++考试。虽然看着我的老师powerpoint,我已经注意到他已经使用了这个" - >"很多。而且我不确定这意味着什么?它真的是一个你可以用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;
}

6 个答案:

答案 0 :(得分:7)

这是一个组合取消引用和成员访问。此ptr->next相当于(*ptr).next

答案 1 :(得分:4)

->运算符会对指针进行处理,并从中检索超出该位置指示的内存索引。因此:

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。

答案 2 :(得分:3)

检查一下。这个问题已经存在于C.

http://stackoverflow.com/questions/4113365/what-does-mean-in-c

答案 3 :(得分:1)

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

答案 4 :(得分:1)

->运算符特别是结构解除引用。在block->next中,它调用指针next指向的对象的成员变量block。有关C ++中成员和指针运算符的列表,请参阅this页面。

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

答案 5 :(得分:1)

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

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

否则,您可以看到以下示例:

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

这三项行动是平等的: stu.num 2.(* P).num 3. p-> num