|
|||||||
Структуры в языке Си. Массивы структур
Время создания: 30.03.2023 15:35
Текстовые метки: язык, Си, C, структура, struct, массив
Раздел: Компьютер - Программирование - Язык C (Си)
Запись: xintrea/mytetra_syncro/master/base/1680179753uascznc8dx/text.html на raw.github.com
|
|||||||
|
|||||||
Из структур можно создавать массивы также, как массивы других типов. И все форматы определения массива структур будут аналогичны определению массивов других типов: struct person people[10]; В данном случае определен массив структур person из 10 элементов. Используем массив структур в программе: #include <stdio.h>
struct person { int age; char name[20]; };
int main(void) { struct person people[] = { {23, "Tom"}, {32, "Bob"}, {26, "Alice"}, {41, "Sam"}}; int n = sizeof(people)/sizeof(people[0]); for(int i=0; i<n; i++) { printf("Name:%s \t Age: %d \n", people[i].name, people[i].age); } return 0; } В массиве people определено 4 объекта person. При инициализации данные каждой отдельной структуры заключаются во вложенные фигурные скобки: { {23, "Tom"}, {32, "Bob"}, {26, "Alice"}, {41, "Sam"}} Обращение к элементам массива структур происходит по индексу people[0]. А чтобы обратиться к элементу структуры из массива, после индекса указывается имя элемента структуры: people[i].name Консольный вывод программы: Name: Tom Age: 23 Name: Bob Age: 32 Name: Alice Age: 26 Name: Sam Age: 41 И также как с массивами других типов с массивами структур можно использовать указатели: #include <stdio.h>
struct person { int age; char name[20]; };
int main(void) { struct person people[] = { {23, "Tom"}, {32, "Bob"}, {26, "Alice"}, {41, "Sam"}};
int n = sizeof(people)/sizeof(people[0]);
for(struct person *p=people; p < people+n; p++) { printf("Name:%s \t Age: %d \n", p->name, p->age); } return 0; } Здесь в массиве people те же 4 элемента person. Для их просмотра создан указатель *p, который устанавливается на начало массива people. И в цикле получаем элементы структур через этот указатель. После завершения каждой итерации указатель увеличивается на единицу, то есть перемещается в памяти на количество байт, которые занимает одна структура. И эти действия продолжаются пока указатель не дойдет до конца массива, который можно получить через выражение people+n. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|