1 00:00:00,000 --> 00:00:00,320 2 00:00:00,320 --> 00:00:02,700 >> DAVID J. مالان: دعونا كتابة برنامج في التي نحاول مبادلة قيم 3 00:00:02,700 --> 00:00:04,970 متغيرين، x و y. 4 00:00:04,970 --> 00:00:07,490 مقدما، لقد كتب الكثير هذا البرنامج بالفعل. 5 00:00:07,490 --> 00:00:11,130 الأول، تعريف متغير، س، وتخزينه قيمة، 1. 6 00:00:11,130 --> 00:00:14,120 ثم أعلن متغير y و تخزين في ذلك قيمة، 2. 7 00:00:14,120 --> 00:00:17,700 >> ثم أشرع مع printf لعرض قيم هذه المتغيرات اثنين. 8 00:00:17,700 --> 00:00:21,090 ثم أزعم مع printf أخرى ليتم تبادل تلك المتغيرات. 9 00:00:21,090 --> 00:00:23,690 ثم أدعو دالة يسمى المبادلة. 10 00:00:23,690 --> 00:00:26,100 ومن ثم أزعم أن المتغيرات وقد تبادلت. 11 00:00:26,100 --> 00:00:30,610 وبعد ذلك بطباعة أن ما أزعم هي القيم الجديدة من x و y. 12 00:00:30,610 --> 00:00:32,030 >> الآن ما هو هذا ظيفة المبادلة؟ 13 00:00:32,030 --> 00:00:34,970 انها ليست شيئا يأتي مع C. في الواقع، إذا نظرنا إلى الجزء العلوي من بلدي 14 00:00:34,970 --> 00:00:38,850 ملف، ستلاحظ أن لقد أعلن نموذج أولي لهذه المهمة المبادلة 15 00:00:38,850 --> 00:00:42,750 تحديد أنه يأخذ اثنين رجات، دعا تعسفا أ و ب، وهذا 16 00:00:42,750 --> 00:00:44,300 وظيفة لا يعود أي شيء. 17 00:00:44,300 --> 00:00:48,370 لذلك يفترض، وتفعل ما تقول في مقايضة لوالقيم وب. 18 00:00:48,370 --> 00:00:50,170 دعونا الآن تنفيذ المبادلة. 19 00:00:50,170 --> 00:00:53,820 >> أولا، أنا ذاهب الى اعلان مؤقت متغير وتعيين إليها 20 00:00:53,820 --> 00:00:57,260 القيمة في ذلك، على الرغم من أنني يمكن فقط كما تم تخزينها بسهولة في ذلك ب. 21 00:00:57,260 --> 00:01:00,925 أنا ثم الذهاب الى تغيير قيمة من أن تكون مساوية لتلك التي في ب. 22 00:01:00,925 --> 00:01:04,849 ثم أخيرا، أنا ذاهب إلى تغيير قيمة ب أن يكون ما كان ولكن هو 23 00:01:04,849 --> 00:01:06,340 الآن في درجة الحرارة. 24 00:01:06,340 --> 00:01:08,910 >> الآن أزعم ما قمت به فقط هو الصحيح منطقيا. 25 00:01:08,910 --> 00:01:12,780 لقد تخزين في متغير مؤقت، تغيرت قيمة للتكون لب، ومن ثم 26 00:01:12,780 --> 00:01:15,580 تغيير قيمة ب ليكون ما كان ل. 27 00:01:15,580 --> 00:01:18,620 ولكن عندما كنت تجميع وتشغيل هذا البرنامج، وأنا قلق هذا ليس 28 00:01:18,620 --> 00:01:20,140 يذهب ما أرى. 29 00:01:20,140 --> 00:01:21,625 >> جعل، أي مقايضة. 30 00:01:21,625 --> 00:01:24,350 نقطة خفض، لا المبادلة. 31 00:01:24,350 --> 00:01:27,560 ومما يؤسف له، وفقا لprintf، قيمة x و y، حتى 32 00:01:27,560 --> 00:01:31,560 بعد ندعي أن مبادلة منهم، لا يزال 1 و 2. 33 00:01:31,560 --> 00:01:32,630 >> الآن لماذا؟ 34 00:01:32,630 --> 00:01:36,160 كذلك، اتضح أنه في الرئيسي، ونحن عندما استدعاء هذه الدالة المبادلة، ويمر في 35 00:01:36,160 --> 00:01:39,960 x و y كوسائط، انها فعلا نسخ من x و y التي 36 00:01:39,960 --> 00:01:41,310 ومرت في المبادلة. 37 00:01:41,310 --> 00:01:45,430 وهي قيمهم 1 و 2 مرت في المبادلة كما أ و ب. 38 00:01:45,430 --> 00:01:48,590 وانها وب أننا في نهاية المطاف مبادلة في الرئيسية. 39 00:01:48,590 --> 00:01:50,810 >> وهذا هو، يصبح 1 2، 2 يصبح 1. 40 00:01:50,810 --> 00:01:54,630 ولكن لأن المبادلة لا يوجد لديه قيمة الإرجاع ونظرا إلى أنها تلقت نسخا من خ 41 00:01:54,630 --> 00:01:58,220 و y، انها سلوك و أي تأثير على x و y. 42 00:01:58,220 --> 00:02:02,610 في الواقع، وراقب أ و ب، إذا جاز التعبير، لمبادلة، في حين تبقى x و y 43 00:02:02,610 --> 00:02:03,990 راقب لالرئيسي. 44 00:02:03,990 --> 00:02:05,070 >> لذلك لدينا مشكلة. 45 00:02:05,070 --> 00:02:06,320 ولكن كيف لاصلاحها؟ 46 00:02:06,320 --> 00:02:08,312