Указатель на структуру C ++ - PullRequest
0 голосов
/ 16 февраля 2012

Если я создаю структуру в C ++ следующим образом:

typedef struct node {
    int item;
    int occurrency;
};

Я знаю, что структура выделяется в памяти, используя последовательные пробелы, но как называется структура (node в этом примере)?Простой способ дать имя структуре?

Ответы [ 3 ]

3 голосов
/ 16 февраля 2012

В С

struct node {
    int item;
    int occurrency;
};

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

node n;

Вы должны сделать

struct node n;

Итак, чтобы дать ему «имя типа», многие программисты на С используют typedef

typedef struct node {
    int item;
    int occurrency;
} node;

Таким образом, вы можете сделать

node n;

Вместо

struct node n;

Кроме того, вы можете опустить тег и сделать следующее

typedef struct {
    int item;
    int occurrency;
} node;

Однако в C ++ все это меняется, синтаксис typedef больше не нужен. В C ++ классы и структуры по умолчанию считаются пользовательскими типами, поэтому вы можете просто использовать следующее

struct node {
    int item;
    int occurrency;
};

И объявить узлы, как это

node n;
3 голосов
/ 16 февраля 2012

В C ++ вам не нужно использовать typedef для именования типа структуры:

struct node {
    int item;
    int occurrency;
};

достаточно.

Указатель на экземпляр этой структуры будет определенкак node* mypointer;

Например: вы хотите выделить новый экземпляр с помощью new:

node* mypointer = new node;
2 голосов
/ 16 февраля 2012

node - это имя типа . Вы можете иметь несколько объектов этого типа:

struct node {
  int item;
  int occurrency;
};
node a;
node b;

В этом примере оба типа a и b имеют одинаковый тип (== node), что означает, что они имеют одинаковый макет в памяти. Там есть и a.item, и b.item.

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