Ячейка по сравнению с массивами структур
Этот пример сравнивает ячейку и массивы структур, и показывает, как хранить данные в каждом типе массива. И ячейка и массивы структур позволяют вам хранить данные различных типов и размеров.
Массивы структур
Массивы структур содержат данные в полях, к которым вы получаете доступ по наименованию.
Например, сохраните записи о пациенте в массиве структур.
patient(1).name = 'John Doe'; patient(1).billing = 127.00; patient(1).test = [79, 75, 73; 180, 178, 177.5; 220, 210, 205]; patient(2).name = 'Ann Lane'; patient(2).billing = 28.50; patient(2).test = [68, 70, 68; 118, 118, 119; 172, 170, 169]; patient
patient=1×2 struct array with fields: name billing test
Создайте столбчатый график результатов испытаний для каждого пациента.
numPatients = numel(patient); for p = 1:numPatients figure bar(patient(p).test) title(patient(p).name) xlabel('Test') ylabel('Result') end
Массивы ячеек
Массивы ячеек содержат данные в ячейках, к которым вы получаете доступ числовой индексацией. Распространенные приложения массивов ячеек включают хранение отдельные части текста и хранить гетерогенные данные из электронных таблиц.
Например, храните температурные данные для трех городов в зависимости от времени в массиве ячеек.
temperature(1,:) = '2009-12-31', [45, 49, 0]>; temperature(2,:) = '2010-04-03', [54, 68, 21]>; temperature(3,:) = '2010-06-20', [72, 85, 53]>; temperature(4,:) = '2010-09-15', [63, 81, 56]>; temperature(5,:) = '2010-12-09', [38, 54, 18]>; temperature
temperature=5×2 cell array <[ 45 49 0]> <[54 68 21]> <[72 85 53]> <[63 81 56]>
Постройте температуры для каждого города по дате.
allTemps = cell2mat(temperature(:,2)); dates = datetime(temperature(:,1)); plot(dates,allTemps) title('Temperature Trends for Different Locations') xlabel('Date') ylabel('Degrees (Fahrenheit)')
Другие контейнерные массивы
Массивы структур и массивы ячеек являются обычно используемыми контейнерами для того, чтобы хранить гетерогенные данные. Таблицы удобны для того, чтобы хранить неоднородные ориентированные на столбец или табличные данные. В качестве альтернативы используйте контейнеры карты или создайте ваш собственный класс.
Смотрите также
Связанные примеры
- Доступ к данным в массиве ячеек
- Массивы структур
- Доступ к данным в таблицах
Больше о
Открытый пример
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Документация MATLAB
Поддержка
- MATLAB Answers
- Помощь в установке
- Отчеты об ошибках
- Требования к продукту
- Загрузка программного обеспечения
© 1994-2021 The MathWorks, Inc.
- Условия использования
- Патенты
- Торговые марки
- Список благодарностей
Для просмотра документации необходимо авторизоваться на сайте
Войти
Памятка переводчика
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.
Структуры в Си: конструктор, массивы и указатель на структуру
Структуры в Си очень гибкие, поэтому их можно применять в разных местах. Например , можно создать массив структур. Причем создание массива из структур ничем не отличается от создания массива с другими типами данных. Например:
struct worker staff_member[15];
То ест ь м ы определили массив структур « worker » из 15 компоненто в « staff_m e mber » .
Предлагаем посмотреть массив структур в небольшой программке:
#include
struct worker
int age;
char firstname[30];
>;
int main(void)
struct worker staff_member[] = ;
int n = sizeof(staff_member)/sizeof(staff_member[0]);
for(int i=0; i
printf(«Имя:%s \t Возраст: %d \n», staff_member[i].firstname, staff_member[i].age);
>
return 0;
>
Важно отметить, что у нас в массиве создано 4 объекта « staff_member » . У каждого объекта по 2 элемента, поэтому при инициализации будет передано 8 значений. Но так как обращение идет к структуре, значит , будет определено, что в массиве структур С будет всего 4 объекта « staff_member » , а не 8.
Массив структур в Си позволяет использовать указатель на структуру. Например:
struct worker
int age;
char firstname[30];
>;
int main(void)
struct worker staff_memeber[] = ;
int n = sizeof(staff_memeber)/sizeof(staff_memeber[0]);
for(struct worker *s=staff_memeber; s < staff_memeber+n; s++)
printf(«Имя:%s \t Возраст: %d \n», s->firstname, s->age);
>
return 0;
>
В массиве « worker » расположены все те же объекты, однако для их просмотра мы создали указатель « *s » .
Заключение
Структуры в Си используются для того, чтобы удобнее было оперировать разными типами данных одного объекта. С каждой отдельной структурой можно работать как с определенным типом данных. Например, как мы показали в статье, можно создать массив структур в С , а далее работать со структурами как с обычными компонентами массива.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Что такое структура в чем ее отличие от массива
В отличие от массива, структура – это совокупность объектов, имеющих различный тип.
Для создания структур нужно вначале с помощью табличных редакторов определить структурные типы, а также переменные, аргументы и функции, которые являются членами этих структурных типов.
Для справки: во внутреннем представлении языка Техно ST определение структурного типа задается следующей конструкцией:
//( см . » Операторы определения
//( см . » Пользовательские функции
Параметр имя_структурного_типа>, а также переменные и функции – члены структурного типа – задаются с помощью табличных редакторов.
Определив структурный тип, можно определять конкретные структуры данного типа (объекты). Такими объектами могут быть переменные или функции.
Объекты создаются с помощью табличных редакторов. Для этого в основной программе или ее компоненте создается переменная (функция) типа имя_структурного_типа>.
Для обращения к элементам объекта используется так называемое уточненное имя:
В уточненном имени не поддерживается адресация к элементу массива объекта.
Пусть в программе создан структурный тип с именем myType, членами которого являются следующие переменные и функция:
mvar2: STRING := «OK»;
FUNCTION SecondDegree: LREAL
VAR_ARG xx: REAL; END_VAR
Создание и использование объекта типа myType иллюстрирует следующий код:
myS : myType; // объект myS типа myType
d=myS.SecondDegree(25);// возвращает 625
d=myS.mvar1; // возвращает 3 . 14
//изменение значения mvar1 объекта myS
Таким образом, структурный тип является только шаблоном структур. С именем типа не связан никакой конкретный объект, поэтому это имя нельзя использовать, например, для формирования уточненного имени элемента:
Что такое структура в чем ее отличие от массива
(9)
И Андрей закричал: Я покину причал,
если ты мне откроешь секрет.
И Сиддхартха ответил: Спокойно, Андрей,
никакого причала здесь нет!
я исхожу из правила какой вопрос такой ответ))
даа очень прикольно. есть начинающие и есть профессионалы опытные, Но веь они тоже когда-то были начинающими.
(13) Даже начинающие должны правильно формулировать вопросы.
ага. у меня ребёнка тоже только начинает учиться выражать свои мысли словами
(13) не жалей клавиатуру чем лучше (полнее) опишеш вопрос тем
1) будет меньше стеба
2) Быстрее получиш ответ
ок спасибо большое!
я хотел получить краткое точное описание о различии Структуру, Массив, Таблицу значений, Соответствие()
в каких случаях надо создать Структуру и как и в каких на пример Массив и т.д.
(16) Бери ььььь, мне не жалко, пользуйся.
(17) Массив — это коллекция, элементы которой индексируются по номеру — числовому значению.
Структура — это коллекция, элементы которой индексируются по строковому значению, причем строка должна соответствовать правилам создания идентификаторов.
Соответствие — это коллекция, элементы которой индексируются значением произвольного типа.
Таблица значений — это коллекция, состоящая из строк-кортежей с одинаковой структурой (колонок).
(17)
Надо Структуру — создаешь структуру, надо массив — массив и т.д. И странно что ты не включил сюда СписокЗначений. А что надо — никто кроме тебя не знает. Очень странный вопрос. Нет каких то универсальных кратких ответов. Могу конечно написать что Структура используется для задания отборов. Массив используется, например, для задания типов. Но это лишь верхушка айсберга.