Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/120: Рейтинг темы: голосов - 120, средняя оценка - 4.53
 Аватар для Vahram1995
1 / 1 / 1
Регистрация: 20.01.2013
Сообщений: 80

Передача по ссылке двумерного динамического массива в функцию

24.12.2015, 05:01. Показов 25104. Ответов 114
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приведите, пожалуйста, пример. Нигде не могу найти.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.12.2015, 05:01
Ответы с готовыми решениями:

Передача двумерного массива в функцию по ссылке
Требуется написать функцию, которая выделяет память для одномерного и двумерного динамического массива. Для первого варианта вопросов вроде...

Передача динамического двумерного массива в функцию
Я сделал вот так: void PrintMatrix(int** matrix, int& n, int& m) { for (int i = 0; i < n; i++) { cout << "Row "...

Передача двумерного динамического массива в функцию
Как можно передать динамическую матрицу в функцию что бы при выходе из функции она оставила прежние значения?

114
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
26.12.2015, 04:09
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от nord_v Посмотреть сообщение
Ты в поисковике набери: "именованная область памяти"
ввел. понятие чужеродное для плюсов.
на языке с++ у объекта может быть множество имен.

Цитата Сообщение от nord_v Посмотреть сообщение
массив в С++ всегда имеет имя
C++
1
2
if (std::is_array<int[10]>::value)
    std::cout <<"int[10] is array\n";
в этом примере параметром шаблона std::is_array является массив.
назовите пожалуйста его имя.
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
26.12.2015, 04:23
Цитата Сообщение от hoggy Посмотреть сообщение
на языке с++ у объекта может быть множество имен.
Может это псевдонимы, а не новые имена?

Добавлено через 2 минуты
Цитата Сообщение от hoggy Посмотреть сообщение
в этом примере параметром шаблона std::is_array является массив.
назовите пожалуйста его имя.
Примеры у тебя не для новичков.

Добавлено через 2 минуты
Цитата Сообщение от hoggy Посмотреть сообщение
ввел. понятие чужеродное для плюсов.
Может и чужеродное, но, явно, от мира сего. Часто и в статьях встречается и в литературе (так же, как и термин массив, по отношению к блокам создаваемым через new []). С этим то спорить не будешь?

Добавлено через 2 минуты
Вот, как раз для начинающих (бедные начинающие!): http://mycpp.ru/cpp/book/c03_2_1.html

Добавлено через 1 минуту
Или вот: http://itandlife.ru/programmin... eniya-v-c/

Добавлено через 4 минуты
Или вот: http://12fan.ru/3225450408.html
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
26.12.2015, 04:44
А вот ещё, насчёт массивов. Это уже Солтер Н.А., Клепер С.Дж. "С++ для профессионалов". Ужас, что пишут!!! Позор джунглям!!!
Миниатюры
Передача по ссылке двумерного динамического массива в функцию   Передача по ссылке двумерного динамического массива в функцию  
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
26.12.2015, 05:23
Цитата Сообщение от nord_v Посмотреть сообщение
Может это псевдонимы, а не новые имена?
а это не принципиально.
оригинальное имя имеет туже самую природу, что и все его возможные псевдонимы.

принципиально, что любой из псевдонимов напрямки ассоциирован с областью памяти
(на самом деле зависит от контекста.
иногда компилятору не достаточно данных, для inline,
в этом случае псевдоним может быть реализован посредством указателя)

смысл простой: в таблице символов компилятора
служебный символ объекта может быть связан с несколькими идентификаторами,
задаваемыми в исходном коде.

Цитата Сообщение от nord_v Посмотреть сообщение
Примеры у тебя не для новичков.
при чем тут это?
вы сделали попытку сформулировать сабж без допущений.
она у вас провалилась.

конечно, вы можете втюхать её новичкам с расчетом,
что те подрастут и подкорректируют свои знания.
но тогда это ничем не будет отличаться от политики того же Праты.

Цитата Сообщение от nord_v Посмотреть сообщение
С этим то спорить не будешь?
я никогда ни с кем не спорю.

понятие "именованной области памяти" я не встречал ни у Праты,
ни у остальных 100500 авторов.

собственно, вы - первый источник на моей памяти.

это дает основание полагать фразу:
Цитата Сообщение от nord_v Посмотреть сообщение
Часто и в статьях встречается и в литературе
ложью в контексте с++.

по первой ссылке:
Переменная, или объект – это именованная область памяти
Адресуемость – вот чего не хватает литералу.
автору явно нужно подучить с++
если первый тезис ещё хоть как то с натяжкой
можно списать на допущение для новобранцев,
то второй явно характеризует самого автора,
как новобранца.

вторая ссылка вообще не понятно для чего приведена.
она не коррелирует с темой "именованных областей памяти".

по третьей ссылке:
Переменная - это именованная область памяти компьютера, выделяемая для хранения конкретных данных
такое впечатление что плагиат на первую ссылку, или наоборот.
в общем - аналогичный бред.
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
26.12.2015, 05:31
Цитата Сообщение от hoggy Посмотреть сообщение
при чем тут это?
вы сделали попытку сформулировать сабж без допущений.
она у вас провалилась.
конечно, вы можете втюхать её новичкам с расчетом,
что те подрастут и подкорректируют свои знания.
но тогда это ничем не будет отличаться от политики того же Праты.
Своё предложи.
Цитата Сообщение от nord_v Посмотреть сообщение
Ты сам как бы, в двух словах, для новичков (доходчиво, упрощённо), подчеркнул бы различие?
Цитата Сообщение от hoggy Посмотреть сообщение
вторая ссылка вообще не понятно для чего приведена.
она не коррелирует с темой "именованных областей памяти".
Как это не коррелирует? Скрин оттуда.
Миниатюры
Передача по ссылке двумерного динамического массива в функцию  
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
26.12.2015, 05:32
Цитата Сообщение от nord_v Посмотреть сообщение
Ужас, что пишут!!!
на первой картинке все очень даже четко:
"выделяется память под массив"

на второй - допущение:
"создание массива в куче" ---> пропущено слово "данных".
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
26.12.2015, 05:37
Цитата Сообщение от hoggy Посмотреть сообщение
на первой картинке все очень даже четко:
"выделяется память под массив"
на второй - допущение:
"создание массива в куче" ---> пропущено слово "данных".
Обрати внимание на слова (дорогого стоят): "... массив созданный в области "кучи" аналогичен стековому. Различаются они лишь расположением".
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
26.12.2015, 05:41
Цитата Сообщение от nord_v Посмотреть сообщение
Своё предложи.
могу предложить вариант Страуструпа,
который я уже озвучил выше.

но если бы вы понимали, о чем он пишет,
то уже самостоятельно отбраковали бы
все предложенные вами ссылки.

Цитата Сообщение от nord_v Посмотреть сообщение
Ты сам как бы, в двух словах, для новичков (доходчиво, упрощённо), подчеркнул бы различие?
я бы не использовал термин "переменная",
чего и вам не советую.

Цитата Сообщение от nord_v Посмотреть сообщение
Как это не коррелирует? Скрин оттуда.
извиняюсь, я только до "яндекс директа" дочитал.

Добавлено через 1 минуту
Цитата Сообщение от nord_v Посмотреть сообщение
Обрати внимание на слова (дорогого стоят)
это хорошее наблюдение.
тезис соответствует действительности.
но при этом нужно не забывать,
что аналогия не является эквивалентностью.
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
26.12.2015, 05:59
Цитата Сообщение от hoggy Посмотреть сообщение
могу предложить вариант Страуструпа,
который я уже озвучил выше.
Это не для новичков. Для новичков ничего предложить не можешь?
Цитата Сообщение от hoggy Посмотреть сообщение
я бы не использовал термин "переменная",
чего и вам не советую.
Я же предлагал вариант без переменной:
Цитата Сообщение от nord_v Посмотреть сообщение
С учётом замечаний (для новичков): тип данных массив хранится в именованной области памяти, не путать с неименованными блоками данных, которые создаются в динамической памяти.
Добавлено через 1 минуту
Цитата Сообщение от hoggy Посмотреть сообщение
что аналогия не является эквивалентностью.
А как насчёт: "Различаются они лишь расположением."?

Добавлено через 1 минуту
Цитата Сообщение от hoggy Посмотреть сообщение
понятие "именованной области памяти" я не встречал ни у Праты,
ни у остальных 100500 авторов.
А неименованную область встречал?

Добавлено через 7 минут
А переменная, как именованное хранилище, встречал? По-твоему, это корректное определение?
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
26.12.2015, 06:16
Цитата Сообщение от nord_v Посмотреть сообщение
Для новичков ничего предложить не можешь?
я считаю,
что обучающая литература должна быть в первую очередь педагогической.
а не сухим справочником,
как первое издание Страуструпа.

и при этом приветствую различные приемы,
позволяющие упростить материал.

поэтому, я нахожу политку Праты и компании - верной.

на мой взгляд, это - наиболее эффективный способ обучить новичка.

поэтому, я не вижу смысла в том,
что бы выворачиваться наизнанку,
пытаясь донести "сложное" без искажений так,
словно оно "простое".


сейчас вы думаете: но если я смог понять этого зануду,
почему же тогда в букварях сразу не акцентируют внимания на подобных различиях?
что бы в принципе никаких ложных понятий не возникало?

но вы забываете о том, что вы уже получили некоторую базу.

а вот если свалить это все сразу же на неподготовленный мозг,
то это будет равносильно погружению сознания
в непонятные глубины не пойми чего.

вы смогли понять просто потому,
что у вас уже есть некоторые общие представления о материале.
если бы их не было - вряд ли бы вы смогли уловить суть.
для вас это было бы просто китайской грамотой.

Добавлено через 7 минут
Цитата Сообщение от nord_v Посмотреть сообщение
тип данных массив хранится в именованной области памяти
поймите одну вещь - память сама по себе не именованная, и вообще "никакая".

конечно, вы можете построить абстракцию:
бинд имени на адрес,
и сказать - у меня вся память по именам распределена.

но это будет ваша личная абстракция.
память же при этом именованной не станет.

Цитата Сообщение от nord_v Посмотреть сообщение
А как насчёт: "Различаются они лишь расположением."?
речь идет о данных.

синтаксические различия остаются за кадром,
просто потому,
что нет смысла их приводить новичку на этой уровне.

Добавлено через 1 минуту
Цитата Сообщение от nord_v Посмотреть сообщение
А неименованную область встречал?
нет. я не знаю, что это такое.
здравый смысл подсказывает - вся память "неименованая".
однако в контексте именованной, мне не понятно различие.

"память с которой не ассоциирована ни одна переменная" ?

Добавлено через 4 минуты
Цитата Сообщение от nord_v Посмотреть сообщение
А переменная, как именованное хранилище, встречал? По-твоему, это корректное определение?
да.

C++
1
2
3
4
5
6
void foo()
{
    struct some{};
    char buf[ sizeof(some) ];
    new (buf) some;
}
здесь buf выступает в качестве переменной,
которая обозначает хранилище для объекта типа some.

однако, поскольку понятие "переменной" - уродливо, и часто запутывает,
то я бы сформулировал иначе:
"расположить объект класса some по адресу объекта по имени buf"

это достаточно просто для понимания,
и в тоже время точно, и не допускает никаких двусмысленностей.
1
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
26.12.2015, 06:34
Цитата Сообщение от hoggy Посмотреть сообщение
понятие "именованной области памяти" я не встречал ни у Праты,
ни у остальных 100500 авторов.
Ну, вот, сейчас я тебе организую такую встречу (бедные начинающие!): Шилдт Г. "C++ Руководство для начинающих."
Миниатюры
Передача по ссылке двумерного динамического массива в функцию  
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
26.12.2015, 06:37
Цитата Сообщение от hoggy Посмотреть сообщение
поэтому, я нахожу политку Праты и компании - верной.
на мой взгляд, это - наиболее эффективный способ обучить новичка.
Категорически не согласен. Остаюсь при своём:
Цитата Сообщение от nord_v Посмотреть сообщение
По-моему, если какая-либо вещь важная и нужная, то авторы книг (особенно для начинающих, не Страуструп, по которому учиться невозможно) должны это подчёркивать, обращать на это внимание.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
26.12.2015, 06:56
Цитата Сообщение от nord_v Посмотреть сообщение
Ну, вот, сейчас я тебе организую такую встречу (бедные начинающие!): Шилдт Г. "C++ Руководство для начинающих"
Ок.
A variable is introduced by the declaration of a reference other than a non-static data member or of an object. The variable’s name denotes the reference or object.
Цитата Сообщение от nord_v Посмотреть сообщение
Остаюсь при своём
тогда объяснение банального hello world будет листов на триста
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
26.12.2015, 06:58
Цитата Сообщение от nord_v Посмотреть сообщение
Ну, вот, сейчас я тебе организую такую встречу (бедные начинающие!): Шилдт Г. "C++ Руководство для начинающих."
та же самая схема.

большинство букварей примерно одинаковые.
такие вещи, как Франка - редкое исключение из этого правила.
Цитата Сообщение от nord_v Посмотреть сообщение
Категорически не согласен. Остаюсь при своём:
вы не сможете полноценно преподнести материал, не углубляясь в него.
следовательно, ваш материал окажется слишком сложный для понимания.
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
26.12.2015, 12:07
Цитата Сообщение от hoggy Посмотреть сообщение
вы не сможете полноценно преподнести материал, не углубляясь в него.
следовательно, ваш материал окажется слишком сложный для понимания.
Я говорю не об углубленном изложении (углубляться можно до бесконечности), а о том, что:
Цитата Сообщение от nord_v Посмотреть сообщение
По-моему, если какая-либо вещь важная и нужная, то авторы книг (особенно для начинающих, не Страуструп, по которому учиться невозможно) должны это подчёркивать, обращать на это внимание.
Главное, чтобы у читающих в голове остались эти оговорки по поводу некоторых вещей.

Придумал новое определение (оцени): "Размер объектов типа данных массив (или, можно сказать, просто массивов) всегда известен на этапе компиляции, следовательно, те блоки данных, которые выделяются в динамической памяти во время работы программы, не относятся к такому типу данных (не являются массивами)".
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
26.12.2015, 12:19
А вот как описывают именованные области памяти Дейтелы (Харви М. Дейтел, Пол Дж. Дейтел "Как программировать на C++ ").
Миниатюры
Передача по ссылке двумерного динамического массива в функцию   Передача по ссылке двумерного динамического массива в функцию  
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
26.12.2015, 12:43
А вот как изображает именованную область памяти Лафоре ("ООП в С++").
Миниатюры
Передача по ссылке двумерного динамического массива в функцию  
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
26.12.2015, 13:00
Цитата Сообщение от nord_v Посмотреть сообщение
А вот ещё, насчёт массивов. Это уже Солтер Н.А., Клепер С.Дж. "С++ для профессионалов".
То, что на второй странице курсивом, - чушь или не корректный перевод. Не может этот массив быть в стеке.
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
26.12.2015, 13:02
Цитата Сообщение от hoggy Посмотреть сообщение
понятие "именованной области памяти" я не встречал ни у Праты,
ни у остальных 100500 авторов.
Керниган, Ритчи - Программирование на C (2 издание, стр. 208)
Цитата Сообщение от Керниган, Ритчи
Объект — это именованная область памяти; именующее выражение {lvalue) — это
выражение, обозначающее объект или ссылающееся на него.
1
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
26.12.2015, 13:12
Цитата Сообщение от nmcf Посмотреть сообщение
То, что на второй странице курсивом, - чушь или не корректный перевод. Не может этот массив быть в стеке.
Что именно чушь? Я могу выделить память на стеке в рантайме и вернуть указатель на нее, но это не описано стандартом, о чем и говорится.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.12.2015, 13:12

Передача двумерного динамического массива чисел в функцию
void Map::setCell(int** block, Room* room, int type){ for(int i=room-&gt;x; i&lt;room-&gt;w; ++i) for(int j=room-&gt;y; j&lt;room-&gt;h; ++j) ...

Передача двумерного динамического массива в функцию(объяснение)
Когда мы хотим передать двумерный динамический массив в функцию через указатели (**a) , то в теле ф-ии main() , мы пишем так , как указано...

Передача двумерного динамического массива в функцию в качестве параметра
Вообщем надо сложить и умножить две матрицы, но сделать это в отдельных функциях. Матрицы заданы динамическими массивами размерами n*m и...

Передача двумерного динамического массива в функцию построчно и сортировка
Всем доброго времени суток! Собственно сабж: есть двумерный динамический массив, который надо делить на одномерные и передавать в функцию...

Передача динамического двумерного массива в процедуру
Написал вот такой код для одномерного динамического массива #include &lt;iostream&gt; #include &lt;clocale&gt; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
100
Закрытая тема Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru