Страница 1 из 1
Си динамические двумерные массивы
Добавлено: 21 авг 2016, 23:26
nezabudka
Ну очень мне помог разобраться вот этот небольшой но лаконичный топик с картинкой,
просто и не принужденно, плюс оригинальное решение которое я оставлю на когда нибудь потом.
http://foxford.ru/wiki/informatika/dina ... assivy-v-s
Re: Си динамические двумерные массивы
Добавлено: 22 авг 2016, 00:38
Olej
Отнеситесь с определённой осторожностью к таким объяснениям...
1). посмотрите контингент
преподавателей этого ресурса ... a'la "Учитель информатики и математики с восьмилетним стажем." ... "Эксперт ОГЭ и ЕГЭ по информатике."
2). Показанное в их публикации:
Код: Выделить всё
int **A = (int **)malloc(N*sizeof(int *));
// ... и так далее
Это
абсолютно ничем не отличается от того, что называют в C 2-х мерными массивами:
Единственная минимальная разница, что в первом случае массив выделяется в хипе, а во втором случае - в стеке. Но структура их
абсолютно одинакова.
Но выделять память динамически вместо стека можно в C под
любые агрегаты данных любой степени сложности.
Но выделяемые таким образом массивы нисколько не становятся
динамическими, они столь же
статические в своей структуре и границах.
И называть их так нельзя.
Можно было бы говорить о
динамически размещаемых массивах ... что, как говорят в Одессе, "две большие разницы".
Re: Си динамические двумерные массивы
Добавлено: 23 авг 2016, 11:13
nezabudka
Ну эта картинка мне очень! помогла в понимании во первых передачи в функции (как вы и заметили) указателя на двумерный массив,
во второрых я действительно не могла понять как считать динамически изменяемое количество
строк(массива типа char[]) из файла-базы_данных. Вот теперь имею ясное представление как в куче создать динамический массив
указателей на (например) строки, отведя как я понимаю в стеке место всего под один указатель.
Re: Си динамические двумерные массивы
Добавлено: 23 авг 2016, 11:27
Olej
nezabudka писал(а):во второрых я действительно не могла понять как считать динамически изменяемое количество
строк из файла-базы_данных. Вот теперь имею ясное представление как в куче создать динамический массив
указателей на (например) строки имея как я понимаю в стеке всего один указатель.
Но лучше это (массивы любой размерности с динамически меняющимися размерностями) делать в C++, используя шаблонные классы STL:
Начала STL и контейнеры C++.
Причём, не нужно обращать внимания на слова "C++" - просто компиляция тем же GCC в режиме С++ (g++), рассматривая C++ только как препроцессор к C коду, каким его, собственно, и начинал делать Б.Страуструп.
Re: Си динамические двумерные массивы
Добавлено: 23 авг 2016, 11:49
Olej
nezabudka писал(а):Ну эта картинка мне очень! помогла в понимании во первых передачи в функции (как вы и заметили) указателя на двумерный массив,
Да, картинка уместная и структуру объясняет.