Создание структуры в c: Сложные типы данных в Си : структуры, объединения, битовые поля

Создание структур и доступ к их компонентам

Заглавная страница
Избранные статьи
Случайная статья
Познавательные статьи
Новые добавления
Обратная связь

КАТЕГОРИИ:

Археология
Биология
Генетика
География
Информатика
История
Логика
Маркетинг
Математика
Менеджмент
Механика
Педагогика
Религия
Социология
Технологии
Физика
Философия
Финансы
Химия
Экология

ТОП 10 на сайте

Приготовление дезинфицирующих растворов различной концентрации

Техника нижней прямой подачи мяча.

Франко-прусская война (причины и последствия)

Организация работы процедурного кабинета

Смысловое и механическое запоминание, их место и роль в усвоении знаний

Коммуникативные барьеры и пути их преодоления

Обработка изделий медицинского назначения многократного применения

Образцы текста публицистического стиля

Четыре типа изменения баланса

Задачи с ответами для Всероссийской олимпиады по праву



Мы поможем в написании ваших работ!

ЗНАЕТЕ ЛИ ВЫ?

Влияние общества на человека

Приготовление дезинфицирующих растворов различной концентрации

Практические работы по географии для 6 класса

Организация работы процедурного кабинета

Изменения в неживой природе осенью

Уборка процедурного кабинета

Сольфеджио. Все правила по сольфеджио

Балочные системы. Определение реакций опор и моментов защемления

Стр 1 из 3Следующая ⇒

Тип данных «Структуры»

Структура записей

Структуры относятся к сложным типам данных. В предшествующих версиях MATLAB они именовались записями, что приводило к неточностям в терминологии системы MATLAB и баз данных. После того как в MATLAB были включены средства создания баз данных, этот тип данных стал именоваться структурами (structures). Они могут содержать разнородные данные, относящиеся к некоторому именованному объекту. Например, объект man (человек) может характеризоваться следующими данными:

 

 

Первые два столбца представляют схему структуры. Как нетрудно заметить, каждая i-я структура состоит из ряда полей, имеющих имена, например man(i).name, man(i). date и т. д. Поля могут содержать данные

любого типа – от пустого поля [ ] до массивов. Приведенная выше структура имеет размер 1х1.

MATLAB поддерживает и массивы структур, что позволяет создавать мощные базы данных.

Поле структуры может содержать другую вложенную структуру или массив структур. Это позволяет создавать вложенные структуры и даже многомерные массивы структур.

 

Создание структур и доступ к их компонентам

Для задания структур на языке MATLAB можно использовать операторы присваивания, что иллюстрирует следующий пример:

>> man.name=’Иван’;

>> man.surname=’Петров’;

>> man.date=1956;

>> man.height=170.5;

>> man.weight=70.34;

Здесь построена базовая структура без индексного указателя. Теперь можно просмотреть полученную структуру, просто указав ее имя:

>> man

man =

name: ‘Иван’

surname: ‘Петров’

date: 1956

height: 170.

5000

weight: 70.3400

 

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

>> man.date

ans =

>> man.date=1964

>> man =

name: ‘Иван’

surname: ‘Петров’

date: 1964

height: 170.5000

weight: 70.3400

 

Для создания массива структур вводится их индексация. Например, вектор структур можно создать, введя индекс в скобках после имени структуры. Так, для создания новой, второй структуры можно поступить следующим образом:

>> man(2).name=’Петр’;

>> man(2).surname=’Сидоров’;

>> man(2).date=1959;

>> man(2)

ans =

name: ‘Петр’

surname: ‘Сидоров’

date: 1959

height: [ ]

weight: [ ]

>> man(2).surname

ans =

Сидоров

>> length(man)

ans =

 

Обратите внимание на то, что не все поля данной структуры заполнены. По-этому значением двух последних компонентов структуры 2 оказываются пустые массивы. Число структур позволяет найти функция length (см. последний при мер).

 

Функция создания структур

Для создания структур используется следующая функция:

struct(‘field1′,VALUES1,’field2’,VALUES2,…) возвращает созданную данной функцией структуру, содержащую указанные в параметрах поля ‘fieldn’ с их значениями ‘VALUESn’. Значением может быть массив ячеек.

Пример:

S=struct(‘student’,’Иванов’,’grup’,2,’estimate’,’good’)

S =

student: ‘Иванов’

grup: 2

estimate: ‘good’

 

Проверка имен полей и структур

Выполнение операций с полями и элементами полей выполняется по тем же правилам, что и при работе с обычными массивами. Однако существует ряд функций, осуществляющих специфические для структур операции.

Приведенные ниже функции служат для тестирования имен полей и структур записей:

isfields(S,’field’) возвращает логическую 1, если ‘field’ является именем поля структуры S;

isstruct(S) возвращает логическую 1, если S – структура, и 0 в ином случае.

Их применение на примере структуры man показано ниже:

>> isfield(man,’name’)

ans = 1

>> isfield(man,’family’)

ans = 0

>> isstruct(man)

ans = 1

>> isstruct(many)

??? Undefined function or variable ‘many’.

>> isstruct(‘many’)

ans = 0

 

Функции полей структур

Функция возврата имен полей

Следующая функция позволяет вывести имена полей заданной структуры:

fieldnames(S) возвращает имена полей структуры S в виде массива ячеек. Пример:

>> fieldnames(man)

ans =

‘name’

‘surname’

‘date’

‘height’

‘weight’

Функция возврата содержимого полей структуры

В конечном счете работа со структурами сводится к выводу и использованию содержимого полей. Для возврата содержимого поля структуры S служит функция getfield:

getfield(S,’field’) возвращает содержимое поля структуры S, что эквивалентно S. field;

getfield(S,{i,j},’field’,{k}) эквивалентно F=S(i,j).field(k).

Пример:

>> getfield(man(2),’name’)

ans = Петр

 

Функция присваивания значений полям

Для присваивания полям заданных значений используется следующая функция:

setfield(S,’field’,V) возвращает структуру S с присвоением полю ‘field’ значения V, что эквивалентно S.field=V.

Пример:

>> setfield(man(2),’name’,’Николай’)

ans =

name: ‘Николай’

surname: ‘Сидоров’

date: 1959

height: [ ]

weight: [ ]

 

 

Удаление полей

Для удаления полей структуры можно использовать следующую функцию:

rmfield(S,’field’) возвращает структуру S с удаленным полем ‘field’.S;

rmfield(S,FIELDS) возвращает структуру S с несколькими удаленными полями. Список удаляемых полей FIELDS задается в виде массива символов или строкового массива ячеек.

Пример:

>> rmfield(man(2),’surname’)

ans =

name: ‘Петр’

date: 1959

height: []

weight: []

 

Массивы ячеек

Создание массивов ячеек

Массив ячеек – наиболее сложный тип данных в системе MATLAB. Это массив, элементами которого являются ячейки, содержащие любые типы массивов, включая массивы ячеек. Отличительным атрибутом массивов ячеек является задание содержимого последних в фигурных скобках {}. Создавать массивы ячеек можно с помощью оператора присваивания.

Существуют два способа присваивания данных отдельным ячейкам:

индексацией ячеек;

индексацией содержимого.

Рассмотрим первый способ. Для этого создадим файл-сценарий с именем ce.m:

A(1,1)={‘Курить вредно!’};

A(1,2)={[1 2;3 4]};

A(2,1)={2+3i};

A(2,2)={0:0.1:1}

 

В этом примере задан массив ячеек с четырьмя элементами: строкой символов, матрицей, комплексным числом и одномерным массивом из 11 чисел.

Теперь можно вызвать этот массив:

>> ce

A =

‘Курить вредно!’ [2×2 double]

[2.0000+ 3.0000i] [1×11 double]

>> A(1,1)

ans =

‘Курить вредно!’

>> A(2,1)

ans = [2.0000+ 3.0000i]

 

Заметим, что к ячейкам такого массива можно обращаться с помощью индексирования, например в виде A(1,1), A(2,1) и т. д.

При индексации содержимого массив ячеек задается следующим образом:

A{1,1}=’Курить вредно!’;

A{1,2}=[1 2;3 4];

A{2,1}=2+3i;

A{2,2}=0:0.1:1;

Теперь можно ознакомиться с созданным массивом ячеек в командном режиме:

>> A

ans =

‘Курить вредно!’ [2×2 double]

[2.0000+ 3.0000i] [1×11 double]

>> A{1,1}

ans = Курить вредно!

>> A{2,1}

ans = 2.0000 + 3.0000i

При серьезной работе с массивами структур (записей) и массивами ячеек полезно иметь дополнительную информацию о списках значений. Для получения такой информации следует выполнить команду help list.

Визуализация массивов ячеек

Для отображения массива ячеек C служит команда celldisp(C). Она дает рекурсивное отображение содержимого массива ячеек C. Например, для ранее созданного массива ячеек A получится следующее:

>> celldisp(A)

A{1,1} = Курить вредно!

A{2,1} = 2.0000 + 3.0000i

A{1,2} =

1 2

3 4

A{2,2} =

Columns 1 through 7

0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000

Columns 8 through 11

0.7000 0.8000 0.9000 1.0000

Для более наглядного графического представления массива ячеек может использоваться команда cellplot:

cellplot(C) строит структуру массива ячеек C;

cellplot(C,’legend’) строит структуру массива ячеек C вместе с «легендой» – шкалой стилей представления данных;

На рис. 1 показано представление массива ячеек A, сформированного ранее. Как видно на рис. 1, ячейки массива представлены квадратами. Векторы и матрицы с численными данными представляются массивами красного цвета с прямоугольными ячейками, при этом отображаются отдельные числа и текстовые данные. Справа от представления массива показана легенда, которая даже в монохромном изображении облегчает выделение типов компонент массива оттенками серого цвета.

 

Рис. 1. Графическое представление массива с четырьмя ячейками

Многомерные массивы ячеек

Вложенные массивы ячеек

Содержимым ячейки массива ячеек может быть, в свою очередь, произвольный массив ячеек. Таким образом, возможно создание вложенных массивов ячеек – пожалуй, самого сложного типа данных. В следующем примере показано формирование массива ячеек A с вложенным в него массивом B (он был создан в примере выше):

>> clear A;

>> A(1,1)={{magic(3),{‘Hello!’}}};

>> A(1,2)={B};

>> A

ans = {1×2 cell} {2×2 cell}

>> A{1}

ans = [3×3 double] {1×1 cell}

>> A{2}

ans =

‘Пить тоже вредно!’ [1×4 double]

[ 2] [ 6.2832]

>> cellplot(A)

На рис. 3 показано отображение массива A с вложенным в него массивом B.

В данном случае вложенный массив отображается полностью как часть массива A.

 

Рис. 3. Графическое представление массива с вложенным в него другим массивом

Урок 6

Тип данных «Структуры»

Структура записей

Структуры относятся к сложным типам данных. В предшествующих версиях MATLAB они именовались записями, что приводило к неточностям в терминологии системы MATLAB и баз данных. После того как в MATLAB были включены средства создания баз данных, этот тип данных стал именоваться структурами (structures). Они могут содержать разнородные данные, относящиеся к некоторому именованному объекту. Например, объект man (человек) может характеризоваться следующими данными:

 

 

Первые два столбца представляют схему структуры. Как нетрудно заметить, каждая i-я структура состоит из ряда полей, имеющих имена, например man(i).name, man(i).date и т. д. Поля могут содержать данные любого типа – от пустого поля [ ] до массивов. Приведенная выше структура имеет размер 1х1.

MATLAB поддерживает и массивы структур, что позволяет создавать мощные базы данных.

Поле структуры может содержать другую вложенную структуру или массив структур. Это позволяет создавать вложенные структуры и даже многомерные массивы структур.

 

Создание структур и доступ к их компонентам

Для задания структур на языке MATLAB можно использовать операторы присваивания, что иллюстрирует следующий пример:

>> man.name=’Иван’;

>> man.surname=’Петров’;

>> man.date=1956;

>> man.height=170.5;

>> man.weight=70.34;

Здесь построена базовая структура без индексного указателя. Теперь можно просмотреть полученную структуру, просто указав ее имя:

>> man

man =

name: ‘Иван’

surname: ‘Петров’

date: 1956

height: 170.5000

weight: 70. 3400

 

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

>> man.date

ans =

>> man.date=1964

>> man =

name: ‘Иван’

surname: ‘Петров’

date: 1964

height: 170.5000

weight: 70.3400

 

Для создания массива структур вводится их индексация. Например, вектор структур можно создать, введя индекс в скобках после имени структуры. Так, для создания новой, второй структуры можно поступить следующим образом:

>> man(2).name=’Петр’;

>> man(2).surname=’Сидоров’;

>> man(2).date=1959;

>> man(2)

ans =

name: ‘Петр’

surname: ‘Сидоров’

date: 1959

height: [ ]

weight: [ ]

>> man(2).surname

ans =

Сидоров

>> length(man)

ans =

 

Обратите внимание на то, что не все поля данной структуры заполнены. По-этому значением двух последних компонентов структуры 2 оказываются пустые массивы. Число структур позволяет найти функция length (см. последний при мер).

 

Функция создания структур

Для создания структур используется следующая функция:

struct(‘field1′,VALUES1,’field2’,VALUES2,…) возвращает созданную данной функцией структуру, содержащую указанные в параметрах поля ‘fieldn’ с их значениями ‘VALUESn’. Значением может быть массив ячеек.

Пример:

S=struct(‘student’,’Иванов’,’grup’,2,’estimate’,’good’)

S =

student: ‘Иванов’

grup: 2

estimate: ‘good’

 

123Следующая ⇒


Читайте также:



Организация работы процедурного кабинета

Статус республик в составе РФ

Понятие финансов, их функции и особенности

Сущность демографической политии



Последнее изменение этой страницы: 2016-04-23; просмотров: 1157; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia. su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь — 38.242.236.216 (0.006 с.)

Внутренние структуры обмена данными

В конструкторе интерфейсов для страницы, портлета и пользовательского компонента можно создавать внутренние структуры обмена данными. Они позволяют передавать данные внутри той страницы, портлета или компонента, где они были созданы.

начало внимание

Такие структуры можно использовать только при моделировании страницы, портлета или компонента. При работе с формами создание внутренних структур обмена данными недоступно.

конец внимание

Чтобы создать внутреннюю структуру обмена данными, перейдите в дизайнере ELMA в раздел Интерфейсы. Далее откройте нужную страницу, портлет или пользовательский компонент и нажмите на левой панели на кнопку . Справа откроется окно, в котором отобразится список всех созданных внутренних структур обмена данными.

Чтобы создать новую, нажмите на кнопку .

Далее откроется окно, которое состоит из вкладок Общие настройки, Дополнительно, Свойства и Таблица.

Вкладка «Общие настройки»

На этой вкладке укажите название и описание внутренней структуры обмена данными.

С этой вкладки вы можете перейти на вкладку Свойства, нажав Перейти к списку свойств.

Вкладка «Дополнительно»

На этой вкладке в блоке Расширенные настройки автоматически указывается уникальное имя внутренней структуры обмена данными, которое будет использоваться при работе со сценариями. Имя можно изменить. Рекомендуется указывать понятное название на английском языке.

Важно: вы можете использовать только буквы латинского алфавита, цифры и знак подчеркивания.

Вкладка «Свойства»

На этой вкладке можно создавать вложенные структуры и свойства внутренней структуры обмена данными. Это делается так же, как при работе с глобальными структурами обмена данными. Подробнее об этом читайте в этой статье.

Вкладка «Таблица»

При создании страниц, портлетов и компонентов можно отображать данные в виде блока. Для этого создайте свойство, в качестве типа данных которого укажите внутреннюю структуру обмена данными. При этом для свойства должен быть выбран тип связи Список. После этого в поле Вид отображения можно указать Блок.

На этой вкладке задаются настройки таблицы отображения такого блока. Работа с ними осуществляется так же, как и при настройке глобальных структур обмена данными. Подробнее об этом можно прочитать в статье «Настройки глобальной структуры обмена данными».

После того как все настройки будут заданы, нажмите на кнопку Сохранить.

Если вы хотите сразу создать ещё одну структуру обмена данными, нажмите кнопку Сохранить и добавить новое.

data-transfer-object-type-property. html function-and-formula-using.html

Нашли опечатку? Выделите текст, нажмите ctrl + enter и оповестите нас

Структура в программировании на C

Структура в языке программирования C — это определяемый пользователем тип данных, который группирует логически связанную информацию разных типов данных в единый блок. Структурная переменная может хранить несколько переменных разных типов данных. Каждая переменная, объявленная в структуре, называется членом.

Обычно мы хотим хранить более одной информации о любом объекте. Предположим, мы хотим хранить информацию обо всех сотрудниках компании. Мы хотим хранить следующую информацию для каждого сотрудника:

Имя (строка)
Возраст (целое число)
Заработная плата (число с плавающей запятой)
Департамент (строка)
 

Мы можем создать собственный тип данных, который может хранить все данные о сотруднике под одним именем.

Язык программирования C обеспечивает поддержку определения пользовательского типа данных (структуры), который может собирать и хранить всю связанную информацию об объекте. Используя структуру, мы можем хранить все сведения о сотруднике в структурной переменной, и мы можем определить массив структур для хранения сведений обо всех сотрудниках.


Конструкции в деталях

Нажмите на ссылки ниже, чтобы узнать больше о структурах в C

  • Доступ к членам Структуры

  • Пользователи на конструкции в C

  • Пропускная структура для функционирования в C

  • Гнездование конструкций в C

  • Структура в C

9

44.

DONIGNING ARTRENTIO Ключевое слово struct используется для объявления структуры. Объявление структуры определяет формат/схему/шаблон определяемого пользователем типа данных. Как и любые другие переменные в C, структура должна быть объявлена ​​до ее первого использования в программе.

Синтаксис объявления структуры

struct название_структуры
{
    тип_данных имя_переменной1;
    тип_данных имя_переменной2;
    .
    .
    тип_данных имя_переменнойN;
};

  • Ключевое слово struct используется для объявления структуры.

  • имя_структуры — имя структуры.

  • data_type переменная1; является оператором объявления переменной-члена. data_type — это тип переменной-члена.

  • Мы можем объявить любое количество переменных-членов внутри структуры.

  • Объявление структуры само по себе не создает никаких переменных и не выделяет память. Память выделяется в первый раз, когда объявляется переменная структурного типа.

Например,
Декларация структуры для хранения вышеупомянутых сведений о сотруднике

структура сотрудника
{
 имя символа[100];
 инт возраст;
 плавающая заработная плата;
 отдел обугливания[50];
};
 

Объявление структурной переменной

Мы можем объявить переменную структуры, как только мы определили формат структуры. Существует два способа объявления структурной переменной:

  • Использование ключевого слова struct после определения структуры.
  • Объявление переменных во время определения структуры.

Объявление переменных во время определения структуры

структура сотрудника
{
    имя символа[100];
 инт возраст;
 плавающая заработная плата;
 отдел обугливания[50];
} сотрудник_один;
 

переменная employee_one является экземпляром структуры employee.

Мы можем объявить несколько переменных, разделив их запятой.

структура сотрудника
{
    имя символа[100];
    инт возраст;
    плавающая заработная плата;
    отдел обугливания[50];
} сотрудник_один, сотрудник_два, сотрудник_три;
 

Объявление переменных с использованием ключевого слова struct

Синтаксис определения структурной переменной подобен синтаксису объявления переменной любого базового типа данных в C. Он использует ключевое слово struct, за которым следует имя структуры в качестве типа данных.

структура имя_структуры имя_переменной;

Например
структура сотрудника employee_one;
 

Вышеприведенный оператор объявляет переменную структуры типа employee.
Все переменные-члены структуры хранятся в смежных ячейках памяти.


Инициализация структурной переменной

Как и любую другую переменную в C, мы можем инициализировать структурную переменную во время объявления. Мы можем указать начальные значения в виде списка констант, разделенных запятыми, заключенных в фигурные скобки.

структура сотрудника
{
    имя символа[100];
    инт возраст;
    плавающая заработная плата;
    отдел обугливания[50];
} employee_one = {"Джек", 30, 1234,5, "Продажи"};
 

Мы также можем инициализировать структурную переменную после объявления структуры.

struct employee employee_one = {"Джек", 30, 1234,5, "Продажи"};
 

Необязательно инициализировать все переменные-члены структуры. Следующий оператор инициализирует только имя члена структуры employee, а остальные члены инициализируются нулем (для целых чисел и чисел с плавающей запятой) и NULL (для указателей и символов).

структура сотрудника
{
    имя символа[100];
    инт возраст;
    плавающая заработная плата;
    отдел обугливания[50];
} employee_one = {"Джек"};
 

Структура в C

  1. Дом
  2. Ключевые слова C
  3. структура

Структура в C позволяет нам создавать сложные типы данных. Этот новый тип может содержать несколько значений разных типов. Если вы знакомы с enum в C, синтаксис для определения структуры будет для вас простым.

Синтаксис


Создаем структуры с ключевым словом struct . Обычно мы создаем их в отдельном заголовочном файле. Другая Вариант состоит в том, чтобы определить их в наших файлах .c вне какой-либо функции.

 структура [тег]
{
    [Определение члена];
    [Определение члена];
    ...
    [Определение члена];
} [Список переменных для создания];
 
  • Ключевое слово struct сообщает компилятору, что мы создаем структуру
  • Тег — это имя типа структуры. Мы можем использовать его позже для создания переменных. Мы называем эти переменные экземплярами. Тег является необязательным.
  • Внутри тела мы определяем элементы. Мы можем определить столько, сколько нам нужно. Их тип может быть любым допустимым типом C, включая другие структуры, союзы и т. д.
  • После тела у нас есть возможность создать список переменных текущего типа. Для этого мы просто пишем их имена и разделяем их запятая.
  • Не забудьте точку с запятой в конце! Это обязательно.

Пример: определение структуры в C

служащих.ч

 структура Сотрудник
{
    имя персонажа[30];
    адрес символа[50];
    инт возраст;
};
 

Создание экземпляров


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

 struct Employee
{
    имя персонажа[30];
    адрес символа[50];
    инт возраст;
} Сотрудник1, Сотрудник 2, Сотрудник 3;
 

Теперь можно работать с тремя сотрудниками переменные.

Мне нравится разделять типы и переменные, поэтому я предпочитаю второму способу . После определения структуры используйте ее тег и ключевое слово struct для создания переменной:

    struct Employee рабочий1;

Также можно объявить указатель:

структура Сотрудник* рабочий2;

Доступ к элементам


Чтобы получить доступ к элементу структуры в C, мы используйте операторы точки «. » и стрелки «->».

  • Мы используем точечный оператор когда мы работаем с экземпляром:
 struct Employee worker1;
рабочий1.возраст = 20;
 
  • Используем стрелку оператор когда мы работаем с указатель на экземпляр:
 struct Employee* worker2;
рабочий2->возраст = 20;
 

Создание сложной структуры на C

Сложная структура — это такая, которая содержит хотя бы один член сложного типа — например, другая структура. Возьмем элемент адреса сверху. Вместо того, чтобы хранить его в строковом поле, мы можем определить его так:

 структура Сотрудник
{
    Адрес структуры
    {
        страна чар[30];
        чар город[30];
        Чаровая улица[30];
        поле адреса символа[30];
    } адрес;
    имя персонажа[30];
    инт возраст;
};
 

или так:

address.h

 struct Address
{
    страна чар[30];
    чар город[30];
    Чаровая улица[30];
    поле адреса символа[30];
};
 

employee. h

 struct Сотрудник
{
    структура Адрес адрес;
    имя персонажа[30];
    инт возраст;
};
 

Вот как информация в этом комплексе структура обрабатывается после ввода и вывода:

Padding

В C по умолчанию данные в структуре автоматически мягкий. Заполнение добавляет пустые байты в память, чтобы выровнять данные. Это делается по двум причинам:

  • Для более быстрого доступа к данным
  • На многих процессорах выравнивание данных является обязательным.

Для большинства процессорных архитектур данные выравнивание является обязательным — например, для процессоров с архитектурой RISC (ARM, MIPS…). Невыровненный данные разрешены на процессорах с архитектурой CISC (почти все настольные компьютеры x86, x64…).

Вот как мы определяем пример структуры в C:

 struct A
{
    символ чара;
    внутренний номер;
    короткий идентификатор;
};
 

А вот как это выглядит на самом деле память:

 структура А
    {
        символ чара; // 1 байт в памяти
        символ CHAR_PADDING[3]; // 3 байта заполнения
        внутренний номер; // 4 байта - заполнение не требуется
        короткий идентификатор; // 2 байта в памяти
        символ SHORT_PADDING[2]; // 2 байта заполнения
    };
 

Итак, результат sizeof(struct A) составляет 12 байт.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *