Ясное, простое объяснение того, что такое структура в C - PullRequest
4 голосов
/ 07 февраля 2011

У меня уже есть какая-то идея, но я подумал, что было бы хорошо получить некоторую информацию от замечательных людей здесь, в Соф.

Пожалуйста, дайте мне знать, если мой вопрос слишком широкий или расплывчатый.

Ответы [ 4 ]

9 голосов
/ 07 февраля 2011

Вопрос немного широкий, но ...

Структура - это агрегатный или составной тип данных, используемый для представления сущностей, описываемыхнесколько атрибутов потенциально разных типов.Некоторые примеры:

  • Точка в трехмерном пространстве, представленная 3 действительными координатами x, y и z;
  • Почтовый адрес, представленный названием улицы,номер дома или квартиры, город, штат, почтовый индекс;
  • Позиция в счете, представленная именем или номером детали, стоимостью единицы, количеством и промежуточной суммой;
  • Узел вдерево, представленное ключом, значением данных, левым и правым дочерними элементами;

и т. д. и т. д. и т. п.

Давайте рассмотрим почтовый адрес как конкретныйпример.Мы могли бы определить наш тип почтового адреса следующим образом:

struct Address {
  char *streetName; 
  int buildingNumber;  // House, apt building, office building, etc.    
  char *aptNumber;     // Handles apt and suite #s like K103, B-2, etc.
  char *city;
  char state[3];
  int zip;
};

Мы создали бы экземпляр этой структуры следующим образом:

struct Address newAddress;

и указатель на этот экземпляр как:

struct Address *addrPtr = &newAddress;

и доступ к каждому из его полей с помощью оператора . или -> в зависимости от того, имеем ли мы дело с экземпляром структуры или указателем на структуру:

newAddress.streetName = strdup("Elm");
addrPtr->buildingNumber = 100;
...

Другой способ взглянуть на структуры - это что-то вроде базы данных запись , состоящая из нескольких полей .

6 голосов
/ 07 февраля 2011

Это пользовательский макет памяти с понятными для человека псевдонимами для смещений в области памяти.

2 голосов
/ 07 февраля 2011

Возможно, не самое простое объяснение, но для полноты, вот что говорит стандарт о структурах (C99 6.2.5 §20):

Тип структуры описывает последовательно распределенный непустой наборобъектов-членов (и, при определенных обстоятельствах, неполного массива), каждый из которых имеет необязательно указанное имя и, возможно, отдельный тип.

0 голосов
/ 07 февраля 2011

Из MSDN -

Тип структуры - это определенный пользователем составной тип. Он состоит из полей или элементов, которые могут иметь разные типы.

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