当我们为其他指针分配一个结构指针时,为什么我们不能直接使用指定的指针来访问数据呢?

时间:2014-05-15 10:47:46

标签: c++

我做过类似的事情。

struct node
{
    int data;
    node *next;
}
node *n1 = n;

当我尝试访问n1->数据时,它告知违反了访问权限。

2 个答案:

答案 0 :(得分:1)

使用std::liststd::forward_list。代码可能是由解除引用未初始化指针时生成的未定义行为引起的。

鉴于你:

struct node
{
    int data;
    node *next;
}

如果您声明:

node *n;
node *n1 = n;

n->datan1->data都会导致UB。

答案 1 :(得分:0)

这种行为可能有几个原因。其中一些是

  1. 您正在分配的原始指针未正确初始化。

    node* n1; node* n2; cout<<n1->data; //UB cout<<n2->data; //UB

  2. 分配后,原始对象超出范围。

    void func(node* n) { node temp; n= & temp; }

    int main(){ node* n; func(n); cout<< n->data; \\UB }