繁体   English   中英

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

[英]initialize structure members using pointer in c++

我正在编写一个简单的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;
}

head是未初始化的指针。 它指向的位置是未定义的,但可能是代码无法写的,因此当您尝试在head->val=10;行中对其进行写入时,会导致崩溃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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM