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