Команда IT специалистов выполнит подготовку инфраструктуры для вашего бизнеса.
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов.
8(977)608-78-62 adm@nixm.ru

Си динамические двумерные массивы

Ответить
Аватара пользователя
nezabudka
Местный говорун
Местный говорун
Сообщения: 618
Зарегистрирован: 18 апр 2015, 06:13
Откуда: Ростов на Дону

Си динамические двумерные массивы

Сообщение nezabudka »

Ну очень мне помог разобраться вот этот небольшой но лаконичный топик с картинкой,
просто и не принужденно, плюс оригинальное решение которое я оставлю на когда нибудь потом.
http://foxford.ru/wiki/informatika/dina ... assivy-v-s
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Olej

Re: Си динамические двумерные массивы

Сообщение Olej »

nezabudka писал(а):Ну очень мне помог разобраться вот этот небольшой но лаконичный топик с картинкой,
просто и не принужденно, плюс оригинальное решение которое я оставлю на когда нибудь потом.
http://foxford.ru/wiki/informatika/dina ... assivy-v-s
Отнеситесь с определённой осторожностью к таким объяснениям...
1). посмотрите контингент преподавателей этого ресурса ... a'la "Учитель информатики и математики с восьмилетним стажем." ... "Эксперт ОГЭ и ЕГЭ по информатике."
2). Показанное в их публикации:

Код: Выделить всё

int **A = (int **)malloc(N*sizeof(int *));
// ... и так далее
Это абсолютно ничем не отличается от того, что называют в C 2-х мерными массивами:

Код: Выделить всё

int A[ 10 ][ 10 ];

Единственная минимальная разница, что в первом случае массив выделяется в хипе, а во втором случае - в стеке. Но структура их абсолютно одинакова.
Но выделять память динамически вместо стека можно в C под любые агрегаты данных любой степени сложности.
Но выделяемые таким образом массивы нисколько не становятся динамическими, они столь же статические в своей структуре и границах.
И называть их так нельзя.
Можно было бы говорить о динамически размещаемых массивах ... что, как говорят в Одессе, "две большие разницы".
Аватара пользователя
nezabudka
Местный говорун
Местный говорун
Сообщения: 618
Зарегистрирован: 18 апр 2015, 06:13
Откуда: Ростов на Дону

Re: Си динамические двумерные массивы

Сообщение nezabudka »

Ну эта картинка мне очень! помогла в понимании во первых передачи в функции (как вы и заметили) указателя на двумерный массив,
во второрых я действительно не могла понять как считать динамически изменяемое количество
строк(массива типа char[]) из файла-базы_данных. Вот теперь имею ясное представление как в куче создать динамический массив
указателей на (например) строки, отведя как я понимаю в стеке место всего под один указатель.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Olej

Re: Си динамические двумерные массивы

Сообщение Olej »

nezabudka писал(а):во второрых я действительно не могла понять как считать динамически изменяемое количество
строк из файла-базы_данных. Вот теперь имею ясное представление как в куче создать динамический массив
указателей на (например) строки имея как я понимаю в стеке всего один указатель.
Но лучше это (массивы любой размерности с динамически меняющимися размерностями) делать в C++, используя шаблонные классы STL: Начала STL и контейнеры C++.
Причём, не нужно обращать внимания на слова "C++" - просто компиляция тем же GCC в режиме С++ (g++), рассматривая C++ только как препроцессор к C коду, каким его, собственно, и начинал делать Б.Страуструп.
Olej

Re: Си динамические двумерные массивы

Сообщение Olej »

nezabudka писал(а):Ну эта картинка мне очень! помогла в понимании во первых передачи в функции (как вы и заметили) указателя на двумерный массив,
Да, картинка уместная и структуру объясняет.
Ответить

Вернуться в «C/C++»