Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Jester
Зарегистрирован: 01.08.2006 Сообщения: 12 Откуда: Россия, Москва
|
Добавлено: Вт Авг 01 2006 00:47 Заголовок сообщения: (C++) Передача аргументов в функцию по ссылке и по указателю |
|
|
Помогите пожалуйста понять, чем в C++ отличается передача аргументов в функцию по ссылке и по указателю.
Вот пример:
1. По ссылке:
void test(int& a) // прототип
test(a); // вызов
2. По указателю:
void test(int* a) // прототип
test(&a); // вызов
В обоих случаях (не знаю правли я) в функцию передается адрес переменной a. Тогда в чем же разница между этими двумя способами? |
|
Вернуться к началу |
|
|
Kefir
Зарегистрирован: 16.04.2005 Сообщения: 443 Откуда: Пермь
|
Добавлено: Вт Авг 01 2006 07:44 Заголовок сообщения: |
|
|
Разница в способе использования внутри функции. В том надо ли писать значек & или нет. Вообще передача по ссылке дело плохое, т.к. функция в которой есть такие аргументы может изменить переменную, а программист об этом даже догадываться не будет. Если использовать аргументы по указателю, программисту сразу видно, что функция изменяет этот аргумент. _________________ Самоловских Виталий aka Kefir |
|
Вернуться к началу |
|
|
Jester
Зарегистрирован: 01.08.2006 Сообщения: 12 Откуда: Россия, Москва
|
Добавлено: Вт Авг 01 2006 08:13 Заголовок сообщения: |
|
|
Kefir, спасибо! |
|
Вернуться к началу |
|
|
sniper::p
Зарегистрирован: 04.10.2005 Сообщения: 237 Откуда: rus/73
|
Добавлено: Вт Авг 01 2006 22:43 Заголовок сообщения: |
|
|
Kefir писал(а): | Если использовать аргументы по указателю, программисту сразу видно, что функция изменяет этот аргумент. | Это, надо сказать, тоже вопрос скользкий. Например, по указателю можно передать объект лишь для того, чтоб он весь в стек не копировался, но забыть указать int * const a, в смысле модификатор const. В тоже время можно указать int & const a, что будет говорить об этом, втором применении ссылки. Это дело стиля. Предлагаю почитать по этому поводу книгу ВЕРЕВКА ДОСТАТОЧНОЙ ДЛИНЫ, ЧТОБЫ ВЫСТРЕЛИТЬ СЕБЕ В НОГУ. Правила программирования на С и С++. Ален И. Голуб Кроме того, на форуме RSDN.ru есть на эту тему ветка форума, в которой тоже достаточно подробно описана вся эта фигня с указателями и ссылками _________________ Нет предела совершенствованию |
|
Вернуться к началу |
|
|
Jester
Зарегистрирован: 01.08.2006 Сообщения: 12 Откуда: Россия, Москва
|
Добавлено: Вт Авг 01 2006 23:34 Заголовок сообщения: |
|
|
sniper::p, спасибо за информацию! Обязательно почитаю. _________________ Стиль должен быть во всем, даже в мелочах... |
|
Вернуться к началу |
|
|
|