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;
}
其中*node->data = val;涉及 3 个操作员。
operator*取消引用operator->访问会员operator=做作业这些会按什么顺序发生?根据运算符优先级,其中规定:
| 优先级 | 操作员 | 
|---|---|
| 2 | operator-> | 
| 3 | operator* | 
| 16 | operator= | 
node->data会首先发生,然后结果将被取消引用 - 所以你在*(node->data)左边。
您需要node首先取消引用,并可以使用(...)来覆盖优先级规则:
(*node)->data = val;
另请注意,您的原始文件Node*尚未初始化,读取它(就像您在 中所做的那样if(node == NULL))将导致程序出现未定义的行为。将其初始化为nullptr:
Node* node = nullptr; // here
addnode(&node, 10);
| 归档时间: | 
 | 
| 查看次数: | 1048 次 | 
| 最近记录: |