可能重复:
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;
}
答案 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