|
0 / 0 / 0
Регистрация: 20.11.2014
Сообщений: 20
|
||||||
Работа с двухмерным динамеческим массивом через указатель20.11.2014, 23:07. Показов 2259. Ответов 22
Метки нет (Все метки)
Натупил здесь наверное сильно, подскажите ребят, а то долго уже сиджу над этим... Где ошибки? Программу компилирует, но потом выбивает.
0
|
||||||
| 20.11.2014, 23:07 | |
|
Ответы с готовыми решениями:
22
Работа с двухмерным динамическим массивом через указатель - исправить код Работа с двухмерным массивом Работа с двухмерным массивом данных |
|
5 / 5 / 4
Регистрация: 18.11.2014
Сообщений: 81
|
||||||
| 20.11.2014, 23:14 | ||||||
|
объявляй счетчики так for(int i = 0; i<n;i++)...
и выделение памяти для двумерного массива как-то так:
0
|
||||||
|
28 / 5 / 1
Регистрация: 18.11.2014
Сообщений: 68
|
||||||
| 20.11.2014, 23:19 | ||||||
|
двумерный динамический массив размерностью (size_x, size_y) следует выделять так, потому что по факту в сях нету двумерных массивов, создаётся одномерный массив из int*, указателей на одномерные массивы int:
0
|
||||||
|
Вездепух
12930 / 6798 / 1819
Регистрация: 18.10.2014
Сообщений: 17,198
|
|||||||||||||
| 20.11.2014, 23:29 | |||||||||||||
|
Но если говорить о "сях", то в С поддерживаются и обыкновенные локальные массивы с неконстантной размерностью
Добавлено через 5 минут Но в любом случае ТС можно посоветовать научиться не упоминать имен типов в sizeof и воспользоваться способом 3б по вышеприведенной ссылке
0
|
|||||||||||||
|
И целого heap'а мало
96 / 57 / 17
Регистрация: 31.07.2014
Сообщений: 291
|
||||||
| 20.11.2014, 23:31 | ||||||
|
jake09,
1
|
||||||
|
Вездепух
12930 / 6798 / 1819
Регистрация: 18.10.2014
Сообщений: 17,198
|
||||||||||||
| 20.11.2014, 23:34 | ||||||||||||
0
|
||||||||||||
|
И целого heap'а мало
96 / 57 / 17
Регистрация: 31.07.2014
Сообщений: 291
|
|
| 20.11.2014, 23:37 | |
|
TheCalligrapher, да знаю. Сам тут тоже вертел этими идиомами, да что-то народец не впитывает.
Студенту же нужно прогу написать, чтобы препод о******я, а не код-стайл впитать. Не по теме: В нормальном коде то такого конечно не напишу.
0
|
|
|
28 / 5 / 1
Регистрация: 18.11.2014
Сообщений: 68
|
|||
| 21.11.2014, 00:09 | |||
ISO/IEC JTC1 SC22 WG21 N 3690, § 8.3.4:
0
|
|||
|
Вездепух
12930 / 6798 / 1819
Регистрация: 18.10.2014
Сообщений: 17,198
|
|||||
| 21.11.2014, 00:15 | |||||
Все остальное - детали реализации.
0
|
|||||
|
28 / 5 / 1
Регистрация: 18.11.2014
Сообщений: 68
|
|||
| 21.11.2014, 00:34 | |||
0
|
|||
|
Вездепух
12930 / 6798 / 1819
Регистрация: 18.10.2014
Сообщений: 17,198
|
||||
| 21.11.2014, 00:48 | ||||
|
0
|
||||
|
28 / 5 / 1
Регистрация: 18.11.2014
Сообщений: 68
|
||||
| 21.11.2014, 01:06 | ||||
0
|
||||
|
Вездепух
12930 / 6798 / 1819
Регистрация: 18.10.2014
Сообщений: 17,198
|
||||
| 21.11.2014, 02:01 | ||||
|
В С++03, например, это указано в 8.3.4. Где сказано 8.3.4/1. Что массив 'T a[N]' является непрерывно распределенной последовательностью из 'N' объектов типа 'T' (An object of array type contains a contiguously allocated nonempty set of N sub-objects of type T.) 8.3.4/2. Что типом 'T' может являться в том числе и другой массив (An array can be constructed from one of the fundamental types (except void), from a pointer, from a pointer to member, from a class, from an enumeration type, or from another array.) 8.3.4/3. Что такой объект и является тем, что называется "многомерным массивом" в С++ 8.3.4/4. Поясняет 8.3.4/3 примерами. То есть в языке С++ N-мерный массив определяется рекурсивно как 1-мерный массив N-1-мерных подмассивов. И т.д. Внешнее сходство сводится лишь к возможности применять [i][j] для доступа к элементам. Именно по этой причине новички зачастую наивно полагают, что именно так устроены встроенные языковые многомерные массивы. А на самом деле это не так. У вас сейчас есть уникальная возможность выкинуть весь этот мусор из головы и чему-то наконец научиться. Но для этого вы будете вести себя исключительно вежливо. Если что не понятно - будете задавать вежливые продуманные вопросы. А не устраивает - вперед колбаской по Малой Спасской!
0
|
||||
|
28 / 5 / 1
Регистрация: 18.11.2014
Сообщений: 68
|
|||
| 21.11.2014, 02:06 | |||
|
0
|
|||
|
Вездепух
12930 / 6798 / 1819
Регистрация: 18.10.2014
Сообщений: 17,198
|
||||
| 21.11.2014, 02:21 | ||||
|
Если массив объявлен как 'int a[10][20]' и мы применяем к нему 'a[i][j]', то 'a[i]' - это i-тый объект типа 'int[20]' внутри 'a'. Это i-тый одномерный подмассив. Это подобъект типа "массив int[20]". И (ключевой момент!) в таком контексте он подвергается неявному стандартному преобразованию типа, называемому array-to-pointer conversion (cм. 4.2 в С++03). Это преобразование порождает временное значение - указатель на первый элемент подмассива 'a[i]' и далее работа идет уже с этим указателем. Ключевой момент здесь в том, что никакие указатели физически нигде не хранятся. Никакого массива указателей нет и никогда не было. Указатель возникает только воображаемый, концептуальный, временный, как промежуточный результат выполнения array-to-pointer conversion. Именно об этом подробно написано в той части спецификации, которую вы же сами и цитировали. Именно об этом написано и в K&R. Добавлено через 1 минуту В частности, встроенный языковый массив 'T a[M][N]' требует ровно 'M * N * sizeof(T)' памяти. А вот "jagged array" требует сверх этого еще дополнительно 'M * sizeof(T *)' памяти для явного хранения массива указателей.
0
|
||||
|
28 / 5 / 1
Регистрация: 18.11.2014
Сообщений: 68
|
|||||
| 21.11.2014, 02:40 | |||||
|
0
|
|||||
|
Вездепух
12930 / 6798 / 1819
Регистрация: 18.10.2014
Сообщений: 17,198
|
|||||||||||||||||||||||
| 21.11.2014, 03:12 | |||||||||||||||||||||||
|
Зрителям: я по-моему везде ясно указывал, когда речь идет о встроенных массивах, а когда о рукописных "jagged arrays". Специально тщательно вставлял слова "встроенный" и "языковый". Но все оказалось тщетно. Пациент все свалил в одну кучу и увидел там "противоречия" Случай тяжелый, боюсь мы его теряем....
(Но пациент скорее мертв, чем жив и надежды на излечение малы...) ================= Но самое интересное произойдет, если мы перейдем в язык С с его поддержкой variable-length arrays и сделаем все размеры величинами времени выполнения ![]()
Где же "циклы"TM? Неужели волшебный 'malloc' как-то магически узнал, что нам нужен не просто плоский кусок памяти, а многомерный массив (небось выглянул из глубин своей реализации через перископ), и услужливо выполнил дополнительное выделение памяти для "массивов указателей"TM да еще и "циклов"TM втихаря накрутил для их инициализации!!! Воистину велики дела твои 'malloc'!
0
|
|||||||||||||||||||||||
|
28 / 5 / 1
Регистрация: 18.11.2014
Сообщений: 68
|
|||||||||
| 21.11.2014, 03:51 | |||||||||
0
|
|||||||||
|
Вездепух
12930 / 6798 / 1819
Регистрация: 18.10.2014
Сообщений: 17,198
|
|||
| 21.11.2014, 04:15 | |||
|
Встроенные языковые массивы бывают "динамическими" только по первому размеру. Поэтому давайте-ка не будем отвлекаться и вернемся к моим примерам. Расскажите-ка нам, где ж там "циклы"TM и "массивы указателей"TM, которые, как вы утверждали, существуют во встроенных языковых массивах. Особенно меня интересует вариант с 'malloc' и variable-length arrays. Покажете-ка мне, где прячутся эти загадочные "циклы"TM и "массивы указателей"TM в обоих моих примерах. Я просто горю нетерпением их увидеть.
0
|
|||
|
28 / 5 / 1
Регистрация: 18.11.2014
Сообщений: 68
|
||||
| 21.11.2014, 05:04 | ||||
|
0
|
||||
| 21.11.2014, 05:04 | |
|
Помогаю со студенческими работами здесь
20
Работа с двухмерным массивом данных Операции с двухмерным массивом через консольное меню Работа с массивом структур в функции через указатель на этот массив Развлечения с массивом через указатель Проблемы с двухмерным массивом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|