Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Jester
Зарегистрирован: 01.08.2006 Сообщения: 12 Откуда: Россия, Москва
|
Добавлено: Вт Авг 01 2006 00:51 Заголовок сообщения: (C++) Передача аргументов в функцию по ссылке и по указателю |
|
|
Помогите пожалуйста понять, чем в C++ отличается передача аргументов в функцию по ссылке и по указателю.
Вот пример:
1. По ссылке:
void test(int& a) // прототип
test(a); // вызов
2. По указателю:
void test(int* a) // прототип
test(&a); // вызов
В обоих случаях (не знаю правли я) в функцию передается адрес переменной a. Тогда в чем же разница между этими двумя способами? |
|
Вернуться к началу |
|
|
sniper::p
Зарегистрирован: 04.10.2005 Сообщения: 237 Откуда: rus/73
|
Добавлено: Вт Авг 01 2006 22:26 Заголовок сообщения: |
|
|
В случае с сылкой передается константная ссылка на объект (этот адрес изменить нельзя), но с этой ссылкой Вы работаете как с объектом Код: | void f(int &a)
{
a = 7;
} | В данном случае изменится сам объект (но указатель вы не потеряете). В случае с int *a передается ПЕРЕМЕННЫЙ указатель на объект Код: | void g(int *a)
{
*a = 7;
a = NULL; // будет иметь смысл, но из функции не выйдет
} | Сам объект также изменится, но работаете с ним, как с указателем. Это самое поверхностное определение _________________ Нет предела совершенствованию |
|
Вернуться к началу |
|
|
Jester
Зарегистрирован: 01.08.2006 Сообщения: 12 Откуда: Россия, Москва
|
Добавлено: Вт Авг 01 2006 23:45 Заголовок сообщения: |
|
|
sniper::p, вот это спасибо, так спасибо! Я почему-то не задумывался о том факте, что при передаче аргументов по ссылке, указатель остается константным!
Еще раз спасибо! _________________ Стиль должен быть во всем, даже в мелочах... |
|
Вернуться к началу |
|
|
|