Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2021, 18:59   #1
Roberttt
Пользователь
 
Регистрация: 30.05.2018
Сообщений: 56
По умолчанию Структуры для заполнения динамического массива в СИ

Здравствуйте! Скажите, пожалуйста, правильно ли я заполняю строки массива, потому что есть подозрение, что я просто перезаписываю поля структуры array_int на каждой итерации?

Код:
struct array_int {
    int64_t* data;
    size_t size;
};

struct array_array_int{
    struct array_int* data;
    size_t size;
};


struct array_int array_int_read() {
    const size_t size = read_size();
    if (size > 0) {
        int64_t* array = malloc(size * sizeof(int64_t));
        for (size_t i = 0; i < size; i++) {
            array[i] = read_int64();
        }
        return (struct array_int) {.data = array, .size = size};
    }
    else return (struct array_int) {0};
}

struct array_array_int array_array_int_read() {
    const size_t rows = read_size();
    if ( rows > 0) {
        int64_t** marray = malloc( rows * sizeof(int64_t*) );
        
        for( size_t i = 0; i < rows; i++ ) {
            marray[i] = array_int_read();
        }
        return (struct array_array_int) { .data = marray, . size = rows }; 
    }
    else return (struct array_array_int) { .data = NULL, .size = 0 };
}
Roberttt вне форума Ответить с цитированием
Старый 20.07.2021, 19:17   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
struct array_int* marray = malloc(rows * sizeof(struct array_int));
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 20.07.2021, 21:57   #3
Roberttt
Пользователь
 
Регистрация: 30.05.2018
Сообщений: 56
По умолчанию

Цитата:
Сообщение от Roberttt Посмотреть сообщение
for( size_t i = 0; i < rows; i++ ) {
marray[i] = array_int_read();
Здесь получается создается массив структур? (это функция array_array_int_read())
Roberttt вне форума Ответить с цитированием
Старый 20.07.2021, 22:02   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Правильнее сказать, заполняется.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 20.07.2021, 22:16   #5
Roberttt
Пользователь
 
Регистрация: 30.05.2018
Сообщений: 56
По умолчанию

По заполнению массива возникло несколько вопросов:
1) Т.е. каждая строка имеет структурный тип (struct array_int) с указателем data и количеством элементов size;
2) Каждая такая строка не перезаписывает уже имеющиеся данные в struct array_int;
3) struct array_int это просто тип данных, как int, но сложный?
Спасибо за Ваши разъяснения!
Roberttt вне форума Ответить с цитированием
Старый 20.07.2021, 23:00   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

1) Да (если называть строкой каждый элемент, доступный по полю-указателю struct array_int* data).
2)
Код:
struct array_int {
    int64_t* data;
    size_t size;
};
Это объявление структуры, а не переменной, а данные хранятся в переменных.
3) Да.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция заполнения динамического массива Joose Общие вопросы C/C++ 5 05.03.2013 23:25
Функция заполнения динамического массива случайными числами Beren42 Помощь студентам 3 16.10.2012 10:40
метод класса для заполнения массива Assemblerru Общие вопросы C/C++ 3 23.03.2011 04:09
Переделать для динамического массива. Ueshua Общие вопросы C/C++ 1 20.12.2009 21:33
операция NEW для динамического массива -ushёl- Общие вопросы C/C++ 0 14.11.2009 22:00