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