Форум программистов, компьютерный форум 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 main() {
C++ Динамические массивы с передачей в функции Здравствуйте, завтра у меня обязательная контрольная работа, без права пересдачи, я переболел ветрянкой и не смог разобраться, времени не хватает, помогите, напишите пожалуйста программу на С++(мы сдаем на Borland C++). Задание: вводить неодноразово и обрабатывать массивы, размещая их в динамической памяти.Для каждого из заданий использовать отдельную функцию с передачей параметров в две... http://www.cyberforum.ru/cpp-beginners/thread1306466.html
C++ Выяснить, является ли натуральное число N точным квадратом
Составит линейную логическую программу, печатающую значение 1, если указанное высказывание является истинным, и 0 – в противном случае: натуральное число N является точным квадратом. (не забегая вперёд, по линейным программам)
C++ Как создать глобальную константу для всего проекта?
как создать?
C++ Передача двухмерного массива в функцию http://www.cyberforum.ru/cpp-beginners/thread1306450.html
Товарищи, помогите, пожалуйста, с таким вопросом: Я хочу сделать функции ввода и вывода элементов двухмерного массива, да так, чтобы эти функции были универсальными и принимали аргументы в качестве параметров. Но в описании функции требуется указывать его размерность: void filling_array (arr); Вопрос: как написать функцию, чтобы эти размеры задавались при вызове? Заранее спасибо)
C++ Написать функцию для сортировки порядка строк в файле по возрастанию их длины Дан текстовый файл состоящий из некоторого количества строк.написать функцию для сортировки порядка строк в файле по возрастанию их длины подробнее

Показать сообщение отдельно
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2779 / 1425 / 393
Регистрация: 18.10.2014
Сообщений: 2,621
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'!
 
Текущее время: 03:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru