Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Работа с двухмерным динамеческим массивом через указатель - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как повернуть элементы матрицы на 90 градусов против часовой стрелки? http://www.cyberforum.ru/cpp-beginners/thread1306472.html
ЗАДАНИЕ: Дана матрица. Повернуть все её элементы вокруг центра на 90 градусов против часовой стрелки. #include <iostream> #include <stdlib.h> #include <time.h> using namespace std; int...
C++ Динамические массивы с передачей в функции Здравствуйте, завтра у меня обязательная контрольная работа, без права пересдачи, я переболел ветрянкой и не смог разобраться, времени не хватает, помогите, напишите пожалуйста программу на С++(мы... http://www.cyberforum.ru/cpp-beginners/thread1306466.html
C++ Выяснить, является ли натуральное число N точным квадратом
Составит линейную логическую программу, печатающую значение 1, если указанное высказывание является истинным, и 0 – в противном случае: натуральное число N является точным квадратом. (не забегая...
C++ Как создать глобальную константу для всего проекта?
как создать?
C++ Передача двухмерного массива в функцию http://www.cyberforum.ru/cpp-beginners/thread1306450.html
Товарищи, помогите, пожалуйста, с таким вопросом: Я хочу сделать функции ввода и вывода элементов двухмерного массива, да так, чтобы эти функции были универсальными и принимали аргументы в...
C++ Вывести таблицу значений функции Мастера, помогите написать программу 4 варианта, а то совсем ничего не получается подробнее

Показать сообщение отдельно
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3826 / 2084 / 532
Регистрация: 18.10.2014
Сообщений: 3,699
21.11.2014, 03:12
Цитата Сообщение от true_bugmaker Посмотреть сообщение
Противоречим самому себе потихоньку? Ну-ну.
Смешались в кучу кони, люди!!!...

Зрителям: я по-моему везде ясно указывал, когда речь идет о встроенных массивах, а когда о рукописных "jagged arrays". Специально тщательно вставлял слова "встроенный" и "языковый". Но все оказалось тщетно. Пациент все свалил в одну кучу и увидел там "противоречия" Случай тяжелый, боюсь мы его теряем....

Цитата Сообщение от true_bugmaker Посмотреть сообщение
Тогда яви чудо и создай, а затем освободи динамический многомерный массив без всякого цикла и без инициализации и затем освобождения в розницу всех этих несуществующих указателей
Да пожалуйста. Вот вам аж пятимерный!!!

C++
1
2
int n = 10;
int (*a)[20][30][40][50] = new int[n][20][30][40][50];
доступ

C++
1
a[3][5][6][7][8] = 42;
а вот освобождение

C++
1
delete[] a;
О, чудо!!! Как же так - ни одного цикла?!!

(Но пациент скорее мертв, чем жив и надежды на излечение малы...)

=================

Но самое интересное произойдет, если мы перейдем в язык С с его поддержкой variable-length arrays и сделаем все размеры величинами времени выполнения

C
1
2
3
4
5
6
7
8
9
10
11
int n1 = rand() % 10 + 1;
int n2 = rand() % 20 + 1;
int n3 = rand() % 30 + 1;
int n4 = rand() % 40 + 1;
int n5 = rand() % 50 + 1;
 
int (*a)[n2][n3][n4][n5] = malloc(n1 * n2 * n3 * n4 * n5 * sizeof(int));
 
a[1][2][3][4][5] = 42;
 
free(a);
О, чудо!!!

Где же "циклы"TM? Неужели волшебный 'malloc' как-то магически узнал, что нам нужен не просто плоский кусок памяти, а многомерный массив (небось выглянул из глубин своей реализации через перископ), и услужливо выполнил дополнительное выделение памяти для "массивов указателей"TM да еще и "циклов"TM втихаря накрутил для их инициализации!!! Воистину велики дела твои 'malloc'!
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru