|
1 / 1 / 1
Регистрация: 20.01.2013
Сообщений: 80
|
|
Передача по ссылке двумерного динамического массива в функцию24.12.2015, 05:01. Показов 25041. Ответов 114
Метки нет (Все метки)
0
|
|
| 24.12.2015, 05:01 | |
|
Ответы с готовыми решениями:
114
Передача двумерного массива в функцию по ссылке Передача динамического двумерного массива в функцию Передача двумерного динамического массива в функцию |
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 26.12.2015, 13:36 | |
|
У тебя тогда все адреса того, что там уже есть, сместятся. В стеке что-то выделяется только при вызове функции.
Эта нестандартная возможность некоторых компиляторов - просто завуалированный new.
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 26.12.2015, 14:21 | ||
|
0
|
||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|||||||||||||||||||||||||||
| 26.12.2015, 14:38 | |||||||||||||||||||||||||||
![]() Возьмем LLVM и откроем занятный файлик, например, x86 архитектуры (как самой знакомой тебе) - lib/Target/X86/X86FrameLowering.cpp. Там среди прочего лежит реализация функционала генерации пролога и эпилога вызываемой функции (надеюсь не надо объяснять, что это). И что же мы видим:
Находим в генерации пролога это:
Можно еще взглянуть, как подчищаются псевдоинструкции:
![]()
1
|
|||||||||||||||||||||||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 26.12.2015, 17:38 | |
|
ct0r, достаточно было сказать, что выделяется выше. Только эта "alloca" - другое. Ты же не не объявляешь массив обычным способом.
0
|
|
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|||||||
| 26.12.2015, 17:54 | |||||||
|
Можно добавить, что то же расширение компилятора variable size array реализуется через alloca:
1
|
|||||||
|
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
|
|
| 26.12.2015, 18:24 | |
|
1
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||
| 26.12.2015, 21:35 | ||||||||
|
ну да ладно. теперь давайте рассмотрим тезис: что означает слово "именованная" в этом высказывании? ну то есть понятно: что есть некая область памяти. и у этой области есть имя. но что это за имя? откуда оно берется? и какое оно имеет отношение к нам, программистам? в приведенном ниже коде покажите мне имя объекта. покажите мне имя области памяти. и объясните, как оно возникло, и почему это имя именно такое, какое оно есть:
0
|
||||||||
|
Модератор
|
|
| 26.12.2015, 21:48 | |
|
hoggy, я понимаю так:
Есть уровень абстракции, на котором уместно говорить о явлении "память, поделённая на ячейки определённого размера". Есть уровень абстракции, на котором определённые участки памяти уместно трактовать как "объекты определённого типа". Объекты, насколько я знаю, бывают именованные и неименованные. Что имели ввиду Керниган и Ричи - одни Боги знают. Но то, что выражение "именованная область памяти" не nord_v выдумал - это точно. Именно это я и хотел показать, когда привёл цитату.
1
|
|
|
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
|
|
| 26.12.2015, 22:41 | |
|
hoggy, как новое определение замечания (95 пост)?
0
|
|
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
| 26.12.2015, 23:00 | |
Сообщение было отмечено gru74ik как решение
Решение
Контекст же.
Память - это физическое устройство, способное хранить разные состояния. У таких устройств могут быть внутренние адреса. Выборка одного или более чем одного адреса, для хранения какой-то одной сущности на время работы или вне времени работы программы порождает сущность, именуемую многими как объект. Так уж повелось издавна. Все просто, берем мое это сообщение, выдираем из него рэндомный набор символов, получаем какую-то определенную сущность. До тех пор пока эта сущность (выбранная часть) живет (в голове, на бумаге, в ПК, где угодно), она есть объект. Нет у него имени, нет у него ничего, кроме позиции относительно своего начала и внутреннего содержимого. Эта сущность (выбранная часть текста) даже не знает в каком из миров она появилась.(голова, мозги, ПК, бумага). Это - простейшая модель памяти и объекта (где весь текст - память, выбранная его часть - объект). Ничегошеньки лишнего нет. В том числе эта сущность не знает, что внутри нее какие-то там внутренности. Эта сущность просто есть. Она даже о возможностях своих не знает. Она не знает ни кому она нужна, ни зачем ее используют. Вообще ничего не знает. В то же время, в другом мире, в котором она появилась у нее есть владелец, который ей вертит как хочет, исключительно в своих личных целях. В этом, в другом мире у нее есть имя. В этом другом мире, одно только какое-то слово-идентификатор обозначает всю эту память (весь текст) или ее внутренности (выбранную часть текста). В этом, в другом мире существует понятие именованной области памяти. Про именованную область памяти уместно говорить когда программист идентифицирует выбранный участок памяти каким-то именем. Именованная программистом переменная - это объект, который есть какая-то часть памяти. Это, именно, именованная программистом переменная есть именованный программистом участок памяти для удобной его обработки. Кто бы там что не писал, надо в том числе своей головой думать, а не следовать подобно больным фанатикам всему что видим. В то же время в третьем мире задавались вопросом: "Передача по ссылке двумерного динамического массива в функцию - C++", но почему-то в ответах темы звучали такие фразы, которые больно похожи на: "Ничто тебе уже не поможет" , а отвечики любезно забыли про ТС (очень печальная тенденция ветки С++) а сама тема переросла в холивар, в котором уже обсудили даже вовсе и не одну тему не по теме, но до сих пор эта часть не находится где-нибудь в священных войнах.
0
|
|
|
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
|
|
| 26.12.2015, 23:07 | |
|
0
|
|
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
| 26.12.2015, 23:16 | |
|
nord_v, я не буду холиварить.
Ему дали несколько ответов и тут же начали спорить. Каждый доказывая свою правоту. Басню Крылова напоминает. Пост №3 правильный ответ на тот вопрос, который написан в заголовке темы. Даже если ТС имел ввиду что-то другое, как в заголовке темы писан вопрос - так там ему и отвечено. А указатель в С++ никогда не был массивом. Холиварить далее я не стану.
0
|
|
|
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
|
||
| 26.12.2015, 23:26 | ||
|
0
|
||
|
Комп_Оратор)
|
||||||||||||
| 26.12.2015, 23:27 | ||||||||||||
Сообщение было отмечено gru74ik как решение
Решение![]() тема Передача по ссылке двумерного динамического массива в функцию Кажется некорректной, однако, вспомним и то, что мы в разделе новичков и тут можно встретить задания вроде: "удалить из массива нечётные элементы". ![]() Массив как способ хранения, массив как способ доступа и массив как переменная (сущность на которою можно ссылаться по ссылке), это разные вещи. В языке программистов они существуют параллельно и имеет смысл соблюдать осторожность, стараясь понять о каком значении говорит собеседник. При первой встрече с массивами мы встречаем определение, данное с точки зрения хранения. Далее первые шаги практики показывают, что и доступ к ним особенный, то есть можно обращаться по индексу. Далее оказывается, что оператор "квадратные скобки" можно перегрузить самостоятельно и становится ясно, что доступ не всегда определяет массив, если этот доступ определён как пользовательский. К этим трудностям ещё добавляется массив как переменная. Оказывается, что массив созданный на стеке таким образом:
Однако, везде и всюду существует практика называть области памяти выделенные в куче оператором new[] массивами. С точки зрения хранения тут нет проблем, они подпадают под определение. С точки зрения доступа тоже. Указатель, это встроенный тип с перегруженными скобками и это же не случайно. Указывая на начало области он не знает о её размере и предполагает доступ к первому объекту, но никто не мешает трактовать эту область как массив, обращаясь к отдельным элементам по индексу. Однако такой указатель остаётся указателем и не более. Массивом он является только в голове программиста и передача такого указателя, поддерживающая семантику массива, должна обеспечить видимость размера в область передачи дополнительными средствами. То есть ответ на вопрос в теме: Нельзя осуществить "Передачу по ссылке двумерного динамического массива в функцию", если под ссылкой понимать ссылку объявляемую как ссылку на массив:
"Передачу по ссылке на массив двумерного динамического массива в функцию" Остаётся предположить, что под ссылкой имеется ввиду обобщённое название адресного выражения, под которое попадает и обычный указатель. То есть решением является передача указателя (на указатель) и двух размеров. Что и было сказано в самом начале. Прошу прощения за вторжение, с вещами, которые тут все понимают. Кроме новичков. Я с удовольствием прочел тему и часть о выделении памяти на стеке заинтересовала, как принципиальная возможность. Спасибо ct0r, надеюсь, я когда нибудь почитаю об этом побольше.
2
|
||||||||||||
|
Модератор
|
|
| 27.12.2015, 00:08 | |
|
ТС получил свои ответы. И даже более того. Будем закругляться, господа.
1
|
|
| 27.12.2015, 00:08 | |
|
Передача двумерного динамического массива в функцию построчно и сортировка Передача динамического двумерного массива в процедуру Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0»
https:/ / ibb. co/ NnkGpfMd
Представленная интегрированная схема описывает непрерывную нелинейную. . .
|
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы
### Аннотация
Представлено исследование по разработке агентной модели микоризной. . .
|
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики
Контекст
Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
|
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии
Введение
Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
|
|
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np
class PlantAgent:
def __init__(self, name, strategy, initial_biomass):
self. name = name
self. strategy = strategy # "greedy" (широколиственные) или. . .
|
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли
Введение: Экологический рынок как игра с нулевой суммой
Традиционная экология долгое время. . .
|
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ
Введение: Синдром «цифрового учебника»
Современные большие языковые модели (LLM) обладают колоссальным. . .
|
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос.
Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех.
А широколиственный лес тоже имеет самую крутую биомассу.
То почему не возникло их симбиоза? Это. . .
|