|
5 / 5 / 8
Регистрация: 06.04.2013
Сообщений: 103
|
|
Если выделение памяти для динамического массива задать void-функцией, можно ли будет оперировать с ним в main?10.08.2014, 18:00. Показов 3347. Ответов 40
Метки нет (Все метки)
Если выделение памяти для дин.массива задать void-функцией, можно ли будет оперировать с ним в main или придётся отдельно выделять память в main?
0
|
|
| 10.08.2014, 18:00 | |
|
Ответы с готовыми решениями:
40
Выделение памяти для динамического массива
Использование типа void в качестве возвращаемого значения функцией main |
|
Пес войны
111 / 88 / 22
Регистрация: 23.02.2012
Сообщений: 653
|
|
| 10.08.2014, 18:02 | |
|
1
|
|
|
5 / 5 / 8
Регистрация: 06.04.2013
Сообщений: 103
|
|
| 10.08.2014, 18:03 [ТС] | |
|
Спасибо
0
|
|
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 10.08.2014, 19:09 | |
|
0
|
|
|
|
||||||
| 10.08.2014, 19:16 | ||||||
|
Tulosba, видимо что-то типа
1
|
||||||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||
| 10.08.2014, 19:23 | ||||||
|
CyberSolver, в таком варианте указатель на выделенную память не вернется. Если хочется вернуть значение через аргумент-указатель, то уровень указателя (грубо говоря, количество звездочек *) должен быть на 1 больше, чем тип обрабатываемого объекта. Т.е.
2
|
||||||
|
|
|
| 10.08.2014, 19:36 | |
|
Tulosba, ключевыми словами были «что-то типа». И если бы человек написал ваш код, то и вопроса бы не возникло, верно?
0
|
|
|
5 / 5 / 8
Регистрация: 06.04.2013
Сообщений: 103
|
||||||
| 10.08.2014, 20:42 [ТС] | ||||||
0
|
||||||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 10.08.2014, 23:39 | |
|
1
|
|
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
||||||
| 11.08.2014, 00:00 | ||||||
Сообщение было отмечено sterkh как решение
Решение
sterkh, а если опираться на С++, то лучше передать ссылку на указатель
1
|
||||||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 11.08.2014, 00:16 | |
|
Лучше уж возвращать указатель. Передавать по не-const ссылке - плохо.
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|
| 11.08.2014, 00:42 | |
|
0
|
|
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 11.08.2014, 00:44 | |
|
Очевидно же, что неочевидно
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||
| 11.08.2014, 01:38 | ||
|
Довод, что, мол, понятно становится по операции взятия адреса, что внутри функции объект изменяется в большинстве случаев рассыпается о факт того, что программисту все равно придется смотреть определение (хотя бы чтобы выяснить константность указателя). А раз он посмотрел определение, то ссылка там или указатель уже не важно - программист уже все понял. Чтобы у тебя не сложилось ошибочное мнение, что, мол, я не согласен и везде хочу писать ссылки - сразу скажу: это не так. Всего лишь хотел подчеркнуть, что тема весьма спорная и, принимая это во внимание, так однозначно утверждать про "плохо" или "хорошо" нельзя. Что касается моего мнения на сложившуюся ситуацию, то оно совпадает с первым ответом вот здесь.
1
|
||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 11.08.2014, 02:26 | |
|
Если нужно смотреть большой чужой код и соблюдается данное соглашение, то будет намного легче. Если в функцию передается адрес, то объект может быть её изменен. В остальных случаях, будь то передача по константной ссылке или же по значение, - объект не изменяется. Не нужно будет лишний раз лезть в заголовок за прототипом. Поэтому, я бы отдал предпочтение вот этому соглашению:
http://google-styleguide.googl... _Arguments
1
|
|
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
||
| 11.08.2014, 03:20 | ||
|
0
|
||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 11.08.2014, 03:30 | |
|
Множество людей - множество стилей. Если каждый будет писать как захочет, то будет хаос. Для больших проектов это неприемлемо. Да что там больших, для средних даже. Это мое мнение.
0
|
|
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|
| 11.08.2014, 03:33 | |
|
Да очевидно, что надо придерживаться установленных правил, даже если они совершенно не по душе. Мне интересна была аргументация по тому конкретному правилу. Те доводы, которые приводит гугл, по мне так скажем весьма не убедительны
0
|
|
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 11.08.2014, 03:41 | |
|
Ну мне тоже думается, что основной причиной являются C'шники. Даже не сами C`шники, сколько сам C, который все еще используется в перемешку с C++. Видел его где то в исходниках Chromium`а.
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|||
| 11.08.2014, 08:37 | |||
|
Не по теме: В гуглекстати решили эту проблему просто сделав запись const T * менее предпочтительной.
Это происходит хотя бы потому, что код, особенно такой старый (в смысле с большой историей), как в моем случае, не обязательно написан одной и той же командой (и не обязательно из одной и той же организации). Следовательно запросто могут быть разные гайдлайны (и это часто действительно так: в одной части системы серьезный ООП и полиморфизм, в другой С стиль и процедурное программирование - и вот одна часть кода вызывает другую). Следовательно, в общем случае никаких гарантий нет. Опять же, я не спорю с тобой. Цель поста показать, что есть еще и другие ситуации. Их надо учитывать когда делается общий вывод.
1
|
|||
| 11.08.2014, 08:37 | |
|
Помогаю со студенческими работами здесь
20
Как задать размеры массива пользователем, не используя динамическое выделение памяти Прошу объяснить, почему перед функцией main, которая ничего не возращает, мы должны писать int, а не void? что плохого если я делаю ф-ю main типа void Как в отдельной функции выделить память для динамического массива, объявленного в main Вызов функции динамического выделение памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|