Урок 20: Передача по адресу — swap, который работает
Помнишь сломанный swap из урока 10? Функция получала копии x и y, меняла местами копии — а оригиналы оставались на месте. Сегодня мы это исправим: void swap(int *a, int *b) принимает адреса, и мы вызываем её так: swap(&x, &y);. Запись через *a и *b изменяет настоящие переменные вызывающей стороны. И
Просить мастера починить фотографию твоей гостиной бесполезно: он починит фотографию. swap из урока 10 получал «фотографии» (копии). Когда ты передаёшь адрес и ключ (&x), он входит и меняет настоящую гостиную.
- передача по значению
- Поведение C по умолчанию: функция получает копию. Изменение копии не затрагивает оригинал — вот почему swap из урока 10 не сработал.
- передача по адресу
- Передай &x вместо x. Функция пишет через указатель и изменяет настоящую переменную.
- выходной параметр
- Указатель, через который функция записывает результат — так «возвращают» больше одного значения.
- указатель на структуру
- Указатель, хранящий адрес структуры: struct Student *s = &st;.
- оператор стрелки ->
- s->grade — это сокращение для (*s).grade: перейти к структуре по адресу и взять поле.