|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.08.2009, 00:37 | #1 |
Форумчанин
Регистрация: 21.04.2008
Сообщений: 164
|
передача массива в функцию
Здраствуйте, по ходу изучения с++ возник вопрос.
Чем отличается передача массива по ссылке: Код:
Код:
2)Можно ли пользоваться только указателями (мне привычнее)? 3)Если нет, то в каких случаях нужно использовать ссылки? |
02.08.2009, 00:46 | #2 |
Форумчанин
Регистрация: 24.04.2008
Сообщений: 300
|
в первом варианте можно отказаться от второго аргумента, а во втором нет,но если дописать первым элементом количество элементов,то тоже можно(простите за демагогию ).
Но опять же если функционал программы в большей степени использовать через ссылки,то скорость разработки уменьшается,т.к. тратиться больше время на вылавливание ошибок. |
02.08.2009, 00:58 | #3 | |||
Форумчанин
Регистрация: 21.04.2008
Сообщений: 164
|
Цитата:
Цитата:
Цитата:
|
|||
02.08.2009, 01:16 | #4 | |
Unix C++ developer
Форумчанин
Регистрация: 16.04.2007
Сообщений: 651
|
Цитата:
Код:
А вот во втором случае Код:
Выше я пояснил на ваших примерах, но они не корректны несколько, т.к. это общий случай, а конкретно массив всегда передается по ссылке, в виде указателя на первый элемент, поэтому всегда следует определять размерность массива. Параметры всех остальных типов, по умолчанию, передаются по значению. Последний раз редактировалось oleg kutkov; 02.08.2009 в 01:23. |
|
02.08.2009, 01:29 | #5 | |||
Форумчанин
Регистрация: 21.04.2008
Сообщений: 164
|
Цитата:
В книге, в одном из листингов, написано: Цитата:
Цитата:
Можно использовать const , а можно пользоваться передачей по значению |
|||
02.08.2009, 01:32 | #6 |
Unix C++ developer
Форумчанин
Регистрация: 16.04.2007
Сообщений: 651
|
Да, только передача по значению - это, как я уже сказал, выделение дополнительной памяти, что в случае больших объемов данных (гигантский массив структур, к примеру), ничем хорошим не обернется. Памяти много не бывает
|
02.08.2009, 01:38 | #7 | ||
Форумчанин
Регистрация: 21.04.2008
Сообщений: 164
|
Цитата:
Кстати... Цитата:
Как все происходит с параметром указателем типа const? P.S Второй вопрос не актуален (я понял) первый тоже (невнимательность) Последний раз редактировалось JOFRIF; 02.08.2009 в 01:40. |
||
02.08.2009, 08:25 | #8 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Массив по значению никогда не передаётся, а соответственно никакая память не выделяется. По факту параметр "int a[]" приводится компилятором к "int *a". Так что никакой разницы тут нет. Массивы всегда передаются по указателю на первый элемент.
|
02.08.2009, 12:46 | #9 | ||
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Вот из Книги Шильдта "Полный справочник по C"
Цитата:
Читаем далее Цитата:
Из прочитаного следует вывод, что оба, представленные ТС, варианта передачи массива в функцию - ничем не отличаются.
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс Последний раз редактировалось ROD; 02.08.2009 в 13:21. |
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Передача массива структур в функцию, conio.h, и графика. | jojahti | Общие вопросы C/C++ | 1 | 01.08.2009 21:35 |
Передача массива в функцию | Vistar | Общие вопросы C/C++ | 1 | 27.04.2009 08:08 |
Передача массива из чисел в функцию | x007 | Общие вопросы C/C++ | 3 | 21.04.2009 23:39 |
Передача массива строк в функцию. | Crasty | Общие вопросы C/C++ | 2 | 14.04.2009 13:29 |
Передача двухмерного массива в функцию | IgorKr | Общие вопросы C/C++ | 2 | 28.03.2008 01:11 |