Sid*_*bra 3 c++ pointers operator-precedence unary-operator
在C ++中,我试图通过双指针访问结构成员headref,如下所示
struct Node{
int data;
struct Node* next;
};
struct Node* head = new Node;
head->data = 10;
head->next = NULL;
struct Node** headref = &head;
Run Code Online (Sandbox Code Playgroud)
However, accessing as *headref->data produces errors while casting it ((Node*)*headref)->data works. Why?
Vla*_*cow 10
这个表达
*headref->data
Run Code Online (Sandbox Code Playgroud)
相当于
*( headref->data )
Run Code Online (Sandbox Code Playgroud)
它与有效表达式不同
( *headref )->data
Run Code Online (Sandbox Code Playgroud)
因为数据成员data没有指针类型,并且您不能对其应用一元运算符*。
这个表达
((Node*)*headref)->data
Run Code Online (Sandbox Code Playgroud)
有效不是由于强制转换。这是有效的,因为如果删除多余的转换,您将获得有效的edxpression
( /*(Node*)*/ *headref)->data
Run Code Online (Sandbox Code Playgroud)
如上所示。