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