Как обращаться к элементам массива структур - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Допустим, что у меня есть структура default, имеющая под собой некоторое количество элементов типа char по имени number, и есть ссылка на след. элемент ptr: ...
struct default {number[];
                         ptr;
                        };
Допустим, есть функция, которая использует эту структуру, есть главная функция, которая их вызывает, есть просто обращения к элементам данной структуры с целью выполнить некую операцию, скажем, strcmp. Я знаю, как представить все эти задумки в стандартном обращении, без адресации элементов, то биш, использования списков.

Мои вопросы к вам, Дамы и Господа

: 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;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы
  2. Объявляем структуру с названием defOlt и двумя полями: sotka_voTki типа int и shashka типа int*
  3. Инициализируем константу zakus значением 10
  4. Создаем массив структур batl типа defOlt с размером zakus
  5. В цикле for, начиная с 0 и до zakus включительно, присваиваем полю sotka_voTki значение i, а полю shashka выделяем память под массив int с размером i + 1
  6. Если память не выделена успешно, выводим сообщение и завершаем программу с кодом -1
  7. В цикле for, начиная с 0 и до i + 1 включительно, заполняем элементы массива shashka значениями от 0 до i
  8. В цикле for, начиная с 0 и до zakus включительно, освобождаем память, выделенную под каждый массив shashka
  9. Завершаем программу с кодом 0

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы