使用c ++中的指针初始化结构成员

时间:2013-10-12 10:26:43

标签: c++ struct g++

我正在编写一个简单的c ++代码,用于在代码块中使用g ++初始化结构的成员。以下代码编译时没有任何错误或警告,但是当我运行代码时,我收到错误

  

try.exe已停止工作。

我认为当我将值赋给整数成员val时会出现问题。

#include<iostream>

struct node{
  int val;
  node *next;
}*head;

int main(){
  head->val=10;
  std::cout<<head->val;
  return 0;
}

1 个答案:

答案 0 :(得分:4)

head是一个未初始化的指针。它指向的位置是未定义的,但可能是您的代码无法写入的,当您尝试在行head->val=10;

中写入时会导致崩溃

要解决此问题,您需要为head

分配内存
head = new node();
head->val=10;
....
delete head;

或者,您实际上并不需要示例中的指针

struct node{
  int val;
  node *next;
}head;

int main(){
  head.val=10;
  std::cout<<head.val;