Имя переменной после определения структуры - PullRequest
1 голос
/ 09 февраля 2020

Что такое bar и x ниже и почему они там находятся? Являются ли они экземплярами struct с?

Я читал этот вопрос Stackoverflow , код которого я вставил сюда, и я обнаружил, что в постере и одном из ответов используются имена переменных [bar и x] после определения из struct. cpp ссылка не использует этот синтаксис в своих примерах, и я не знаю, как называется синтаксис, и что делает синтаксис для его поиска.

Если речь идет только о создании экземпляра struct, почему бы не написать его в следующей строке, как это делает cpp reference в его примерах?

struct _bar_ 
    {
        int a;
    } bar; 
struct test {
      int value;
   } x;

Ответы [ 3 ]

2 голосов
/ 09 февраля 2020

struct test { int value; } x; объявляет x объектом типа struct test. Это простая декларация, такая же как int x, с struct test { int value; } вместо int.

1 голос
/ 09 февраля 2020

Используя это определение:

struct _bar_ 
    {
        int a;
    } bar; 

Здесь вы только что объявили переменную типа struct _bar_.

struct product {
  int weight;
  double price;
} ;

product apple;
product banana, melon;

В этом случае, когда указаны имена_объектов, имя типа (product) становится необязательным: struct требует либо имя-типа, либо хотя бы одно имя в имени_объекта, но не обязательно оба .

От: Структуры данных

1 голос
/ 09 февраля 2020

In

struct _bar_ {
    int a;
} bar; 

bar - это объявление переменной типа struct _bar_.

Это то же самое, что и

struct _bar_ bar;
...