|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.06.2011, 13:03 | #1 |
Пользователь
Регистрация: 21.06.2011
Сообщений: 13
|
амперсанд &
Объясните, пожалуйста, что он делает, как и когда его использовать. На данном куске кода.
Код:
|
23.06.2011, 13:09 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
потому что это оператор взятия адреса переменной.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
23.06.2011, 13:31 | #3 |
Пользователь
Регистрация: 21.06.2011
Сообщений: 13
|
То есть амперсанд - ссылка на объект. Чтобы объект мог изменяться внутри другой функции? Можно подробнее, пожалуйста.
|
23.06.2011, 13:40 | #4 |
C++,DirectX/OpenGL
Форумчанин
Регистрация: 09.01.2011
Сообщений: 422
|
|
23.06.2011, 14:41 | #5 |
Пользователь
Регистрация: 21.06.2011
Сообщений: 13
|
Что будет если его убрать из кода?
Очень круто, что это операция взятия адреса, а как она работает на моем куске кода? |
23.06.2011, 15:03 | #6 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
А в какой именно кусок кода вас интересует? У & в C++ три предназначения:
1. Когда & - бинарный оператор. В этом случае он представляет побитовое И над двумя числами. 2. Когда & - унарный оператор. В данном случае он представляет операцию взятия адреса переменной. 3. Когда & - в декларации типа. В этом же случае, он определяет, что тип - ссылочный. По сути два последних случая представляют одно и то же, только когда & как унарный оператор, то происходит явное взятие адреса переменной программистом, когда & в декларации типа, то происходит неявное взятия адреса переменной. В вашем куске кода она работает также как и во всех остальных кусках кода. scanf'у нужно знать куда записать считанную переменную, потому вы передаёте ему адрес этой переменной. А del должен изменить значение указателей, потому он принимает всё это дело по ссылке. Можно было переписать del так: Код:
Короче говоря - адрес переменной нужен для того, чтобы её можно было изменить тем функциям, которые не имеют прямого доступа к ней (как del не имеет доступа к переменным ф-ции main). |
23.06.2011, 15:39 | #7 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Вопрос, как я понял заключается в том, почему в функции del параметр объявлен как goods *&. Нужно это для того, чтобы при выходе из функции head и tail получили новые значения. То есть ты передаешь в функцию адрес указателя, а не его копию, что было бы при таком объявлении goods *
|
23.06.2011, 16:47 | #8 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Одинарный амперсанд и ушко. | the_deer_one | Общие вопросы C/C++ | 3 | 11.03.2011 23:27 |
JavaScript амперсанд | Namolem | Помощь студентам | 0 | 13.02.2010 11:33 |
TForm & TImage & PNG & Прозрачность | delphi_beginner | Общие вопросы Delphi | 7 | 19.09.2009 08:46 |
Просто не понимаю б чём проблема!!!!!!!(char* && index) | artush1984 | Общие вопросы C/C++ | 12 | 30.05.2009 03:30 |
Оператор амперсанд "&" или число внутри текста | dotvz | Microsoft Office Excel | 2 | 02.04.2008 14:33 |