>> Девід Дж. Малан: Давайте напишемо програму в які ми намагаємося змінити значення
дві змінні, х і у.
Заздалегідь, я написав багато цієї програми вже.
По-перше, я оголосити змінну, X, і зберігати в ньому значення, 1.
Тоді я оголошую змінну у і зберігати в ньому значення, 2.
>> Тоді я продовжити Printf для відображення значення цих двох змінних.
Тоді я стверджую, з іншого Printf бути заміни ці змінні.
Тоді я викликати функцію названу підкачки.
А потім я стверджую, що змінні були обміняні.
І тоді я роздрукувати те, що я стверджую, є нові значення х і у.
>> Тепер те, що ця функція підкачки?
Це не те, що приходить з С. Справді, якщо ми подивимося на верхній частині моєї
файл, ви помітите, що я оголосив Прототип для цієї функції обміну
вказавши, що він приймає два цілих, умовно назвати і б, і це
Функція нічого не повертає.
Так, імовірно, це те, що він говорить в свопів п'ятірки і цінностей Б.
Давайте тепер реалізувати своп.
>> По-перше, я збираюся оголосити тимчасовий змінної і присвоїти йому
значення в, хоча я міг би просто як легко зберігати в ньому б.
Я тоді збирався змінити значення з рівним що в б.
А потім, нарешті, я збираюся змінити значення Ь, то, що було, але це
зараз в темп.
>> Тепер я стверджую, що я тільки що зробив є логічно правильним.
Я зберігаються в тимчасовій змінної, змінив значення, щоб бути B, а потім
змінив значення B, щоб бути тим, що було.
Але коли я скомпілювати і запустити цей Програма, я хвилююся, що ні
збирається, що я бачу.
>> Не робіть, що не своп.
крапка не слеш, що не своп.
І, на жаль, відповідно до Printf, значення х і у, навіть
після того як ми стверджувати, що обмін їм, як і раніше 1 і 2.
>> Тепер, чому це?
Ну, виходить, що в основному, коли ми Викликайте цю функцію підкачки, передаючи
х і у як аргументи, це насправді копії х і у, що
передаються в розділ підкачки.
А саме, їх значення 1 і 2 перейшла в своп як і газети.
І це і б, що ми в кінцевому підсумку перекачування в основний.
>> Тобто, один стає 2, 2 стає 1.
Але через підкачки не має значення, що повертається й тому, що він отримав копії х
і у, це поведінка немає ефекту від х і у.
Справді, і б знаходяться в області видимості, так сказати, поміняти, тоді як х і у залишаються
в області видимості основною.
>> Тому у нас є проблеми.
Але, як це виправити?