Как передать переменные из переменной в объект структуры указателя? - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь передать переменную "val", которую я установил, чтобы она была случайной, указателю HEAD, и в конце я хочу распечатать HEAD-> val.

Я пробовал установитьэто напрямую с помощью "HEAD-> val = n.val;"как вы можете видеть, но это приводит к тому, что в конце cout печатается 10 случайных чисел.

#include <iostream>

#include <stdlib.h>

#include <time.h> 

using namespace std;

struct Cell {
    int val;

    Cell *next;


};




int main()
{

    int MAX = 10;

    srand (time(NULL));

    Cell *c = NULL;

    Cell *HEAD = NULL;

    Cell n;



    for (int i=0; i<MAX; i++) {
        // Use dynamic memory allocation to create a new Cell then initialize the 
        // cell value (val) to rand().  Set the next pointer to the HEAD and 
        // then update HEAD. 

        Cell n = {};
        n.val = rand();
        n.next = HEAD;
        HEAD->val = n.val;



        cout << n.val << endl;
    }



}

Я пытаюсь:

  1. передать переменную val изn --> HEAD
  2. распечатка HEAD -> val

Я знаю, как сделать # 2, но попытка сделать # 1 вызывает проблемы в других вещах, как я уже говорил выше. Я верю, что каким-то образом перезаписываю значения n, но мне интересно, почему. Любая помощь приветствуется.

1 Ответ

1 голос
/ 04 ноября 2019

Вам на самом деле нужно выделить head, прежде чем вы сможете сделать что-то вроде того, как дать ему val. new может работать для этого. Это выглядело бы примерно так:

Cell *HEAD = new Cell;

, а затем вам нужно delete, когда вы закончите с этим:

delete HEAD;

Хотя это не идеально. Лучше использовать умные указатели , если вы можете их использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...