在 C++ 中使用指针初始化结构成员

initialize structure members using pointer in c++

本文关键字:初始化 结构 成员 指针 C++      更新时间:2023-10-16

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

尝试.exe已停止工作。

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

#include<iostream>
struct node{
  int val;
  node *next;
}*head;
int main(){
  head->val=10;
  std::cout<<head->val;
  return 0;
}

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;