Как обращаться к элементам массива структур - C (СИ)
Формулировка задачи:
Допустим, что у меня есть структура default, имеющая под собой некоторое количество элементов типа char по имени number, и есть ссылка на след. элемент ptr:
...
Допустим, есть функция, которая использует эту структуру, есть главная функция, которая их вызывает, есть просто обращения к элементам данной структуры с целью выполнить некую операцию, скажем, strcmp.
Я знаю, как представить все эти задумки в стандартном обращении, без адресации элементов, то биш, использования списков.
struct default {number[]; ptr; };
Мои вопросы к вам, Дамы и Господа
: 1) Как обращаться к элементам массива структур (к примеру, struct default fix[...]), который, скажем, содержит не один элемент, а 10? 2) Как осуществить обращение к этим элементам, если бы эта структура была списком? 3) Как работать с функциями в списках на примере данной структуры? Большая просьба, Товарищи программисты, помочь мне ПОНЯТЬ ) Заранее спасибо ) Благодарность гарантирую ; )Решение задачи: «Как обращаться к элементам массива структур»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> typedef struct defOlt{ int sotka_voTki; int *shashka; }; const int zakus = 10; int main () { struct defOlt batl[zakus]; for (int i = 0; i < zakus; ++i){ batl[ i ].sotka_voTki = i; batl[ i ].shashka = malloc((i + 1) * sizeof(int)); if ( !batl[ i ].shashka ){ puts("кровушка у дам, господ и бомжей одного цвета и течет одинаково"); exit ( -1 ); } for (int k = 0; k < i + 1; ++k) batl[ i ].shashka[ k ] = k; } for (int i = 0; i < zakus; ++i) free(batl[ i ].shashka); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Объявляем структуру с названием
defOlt
и двумя полями:sotka_voTki
типа int иshashka
типа int* - Инициализируем константу
zakus
значением 10 - Создаем массив структур
batl
типаdefOlt
с размеромzakus
- В цикле for, начиная с 0 и до
zakus
включительно, присваиваем полюsotka_voTki
значениеi
, а полюshashka
выделяем память под массив int с размеромi + 1
- Если память не выделена успешно, выводим сообщение и завершаем программу с кодом -1
- В цикле for, начиная с 0 и до
i + 1
включительно, заполняем элементы массиваshashka
значениями от 0 доi
- В цикле for, начиная с 0 и до
zakus
включительно, освобождаем память, выделенную под каждый массивshashka
- Завершаем программу с кодом 0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д