我做过类似的事情。
struct node
{
int data;
node *next;
}
node *n1 = n;
当我尝试访问n1->数据时,它告知违反了访问权限。
答案 0 :(得分:1)
使用std::list
或std::forward_list
。代码可能是由解除引用未初始化指针时生成的未定义行为引起的。
鉴于你:
struct node
{
int data;
node *next;
}
如果您声明:
node *n;
node *n1 = n;
n->data
和n1->data
都会导致UB。
答案 1 :(得分:0)
这种行为可能有几个原因。其中一些是
您正在分配的原始指针未正确初始化。
node* n1;
node* n2;
cout<<n1->data; //UB
cout<<n2->data; //UB
分配后,原始对象超出范围。
void func(node* n)
{
node temp;
n= & temp;
}
int main(){
node* n;
func(n);
cout<< n->data; \\UB
}