log*_*eks -1 c++ struct linked-list singly-linked-list function-definition
我有一个如下所示的程序,当我尝试使用指向指针的指针访问结构成员时,它表示表达式必须具有指向类类型的指针。请告诉我如何使用指向指针的指针访问结构对象的数据元素
#include "stdafx.h"
#include<iostream>
struct Node{
int data;
Node* next;
};
void addnode(Node** node, int val)
{
if (node == NULL){
*node = new Node();
*node->data = val;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
Node* node;
addnode(&node, 10);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
其中*node->data = val;涉及 3 个操作员。
operator*取消引用operator->访问会员operator=做作业这些会按什么顺序发生?根据运算符优先级,其中规定:
| 优先级 | 操作员 |
|---|---|
| 2 | operator-> |
| 3 | operator* |
| 16 | operator= |
node->data会首先发生,然后结果将被取消引用 - 所以你在*(node->data)左边。
您需要node首先取消引用,并可以使用(...)来覆盖优先级规则:
(*node)->data = val;
Run Code Online (Sandbox Code Playgroud)
另请注意,您的原始文件Node*尚未初始化,读取它(就像您在 中所做的那样if(node == NULL))将导致程序出现未定义的行为。将其初始化为nullptr:
Node* node = nullptr; // here
addnode(&node, 10);
Run Code Online (Sandbox Code Playgroud)