>> DAVID J. مالان: اجازه دهید به نوشتن یک برنامه در که ما سعی می کنیم به مبادله مقادیر
دو متغیر، x و y.
در پیش، من بسیار نوشته شده است این برنامه در حال حاضر.
اول، من اعلام یک متغیر x، و ذخیره در آن ارزش، 1.
پس از آن من اعلام متغیر y و ذخیره در آن مقدار، 2.
>> سپس من با چون printf اقدام به نمایش مقادیر این دو متغیر.
سپس من با چون printf دیگر ادعا می کنند به مبادله آن متغیرها.
سپس من یک تابع به نام مبادله تماس بگیرید.
و پس از آن من ادعا می کنند که متغیر اند جابجا شده است.
و بعد من نسخه قابل چاپ کردن که آنچه که من ادعا می کنند مقادیر جدید از x و y هستند.
>> در حال حاضر آنچه از این تابع مبادله است؟
این چیزی است که همراه با C. نیست در واقع، اگر ما در بالا از نگاه من
فایل، شما متوجه است که من اعلام کرده ام یک نمونه اولیه برای این تابع مبادله
مشخص است که دو نوع داده int طول می کشد، خودسرانه به نام a و b، و این
تابع هیچ چیزی بر نمی گرداند.
بنابراین احتمالا، آن را نشانی از آنچه در آن می گوید: در معاوضه و ارزش ب است.
بیایید به مبادله پیاده سازی.
>> اول، من قصد دارم به اعلام موقت متغیر و اختصاص دادن به آن
ارزش در یک، هر چند من فقط می تواند به راحتی در آن B ذخیره می شود.
من پس از رفتن به تغییر ارزش از به به که در B برابر باشد.
و سپس در آخر، من قصد دارم برای تغییر ارزش ب به چه بود اما
در حال حاضر در دما.
>> حالا من ادعا می کنند آنچه که من فقط انجام داده ام از نظر منطقی درست باشد.
I ذخیره کرده اید در یک متغیر موقت، ارزش را به B تغییر، و پس از آن
مقدار b را تغییر می شود چه بود.
اما وقتی که من کامپایل و اجرای این برنامه، من نگران هستند که نیست
رفتن آنچه من می بینم.
>> را، نه مبادله.
نقطه بریده بریده، نه مبادله.
و متاسفانه، با توجه به چون printf، مقدار x و y، حتی
پس ما ادعا می کنند به مبادله شود آنها، هنوز هم 1 و 2.
>> در حال حاضر این است که چرا؟
خب، معلوم است که در اصلی، زمانی که ما به این تابع swap، عبور در
x و y را به عنوان آرگومان، آن را در واقع کپی از x و y که
به مبادله گذشت.
یعنی، ارزش های خود را 1 و 2 به مبادله به عنوان A و B منتقل می شود.
و آن را A و B است که ما در نهایت می مبادله در اصلی.
>> این است که، 1 می شود 2، 2 می شود 1.
اما از آنجا که مبادله مقدار بازگشت ندارد و به دلیل آن نسخه از X دریافت
و y، آن رفتار شده است هیچ تاثیری بر x و y.
در واقع، a و b مورد نظر است، پس به صحبت می کنند، به مبادله، در حالی که x و y باقی می ماند
صفحه اصلی مورد نظر است.
>> بنابراین ما یک مشکل.
اما چگونه آن را برطرف؟