инициализировать элементы структуры, используя указатель в C ++

0

Я пишу простой код 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;
}
Теги:
struct
g++

1 ответ

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;
  • 0
    + мы пришли в одно и то же время :)
  • 1
    @GrijeshChauhan Спасибо. Я отложу ваш ответ в следующий раз :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню