1 00:00:00,000 --> 00:00:02,310 [Powered by Google Translate] [4 ہفتہ جاری،] 2 00:00:02,310 --> 00:00:04,240 [ڈیوڈ J. Malan - ہارورڈ یونیورسٹی] 3 00:00:04,240 --> 00:00:07,290 یہ [CS50 ہے. CS50.TV] - 4 00:00:07,290 --> 00:00:11,290 >> یہ CS50 ہے، اور یہ 4 ہفتے کے آخر ہے. 5 00:00:11,290 --> 00:00:14,030 تو کچھ اچھی خبر ہے اور کچھ بری خبر ہے. 6 00:00:14,030 --> 00:00:26,240 پیر کو کوئی لیکچر اگلے ہفتے، کوئی مسئلہ نہیں مقرر کیا ہے. [طالب علموں اتساہی] 7 00:00:26,240 --> 00:00:28,680 تم یہ کہاں جا رہا ہے پسند نہیں کر رہے ہیں. 8 00:00:28,680 --> 00:00:31,590 لیکن ہم اس اگلے بدھ بجائے ہو، 9 00:00:31,590 --> 00:00:37,740 اور نصاب 1 جمعہ لیکچر کے مطابق بھی ہے اگلے جمعہ تاکہ ہم ٹریک پر رہ سکتے ہیں. 10 00:00:37,740 --> 00:00:40,580 لیکن سب کچھ معمول کے مطابق فلمایا جائے گا، تو میں فکر کرنے کی ضرورت نہیں ہے. 11 00:00:40,580 --> 00:00:44,100 >> اور کے حوالے سے 0 کوئز جو ہم ہفتے کے آخر کی طرف کیا کریں گے 12 00:00:44,100 --> 00:00:47,140 کورس کے ہوم پیج cs50.net وضاحت پوسٹ 13 00:00:47,140 --> 00:00:50,160 امیدوں کے تم کس طرح ہے جب وہ پہلی کوئز آتا ہے. 14 00:00:50,160 --> 00:00:55,100 عام طور پر، یہ ایک سے زیادہ پسند ہے، سچے جھوٹے، مختصر جواب، مختصر کوڈنگ مسائل ہو جائے گا. 15 00:00:55,100 --> 00:00:57,360 تم جا برابر لاگو کرنے کے لئے کی توقع نہیں کر رہے ہیں 16 00:00:57,360 --> 00:01:00,030 ایک مسئلہ یہ ہے کہ آپ ایک pset پر دیکھ، جس کے لئے آپ ایک کمپیوٹر ہے 17 00:01:00,030 --> 00:01:03,240 اور debugger طرح، لیکن اس چھوٹے کوڈنگ مسائل کا سامنا ہو گا. 18 00:01:03,240 --> 00:01:06,900 >> اور یقینا، CS50 quizzes کا احساس حاصل کرنے کے لئے کا سب سے بہترین رہنما کی طرح ہیں 19 00:01:06,900 --> 00:01:09,180 ہے cs50.net جانے کے لئے، لنک Quizzes، 20 00:01:09,180 --> 00:01:11,920 گزشتہ کئی سال آپ کو قابل quizzes کے دیکھ سکتے ہیں. 21 00:01:11,920 --> 00:01:16,600 صرف احساس ہے کہ نصاب اسی سال کے دوران ہمیشہ ہے نہیں کیا گیا. 22 00:01:16,600 --> 00:01:18,510 کبھی کبھی ہم شامل، کبھی کبھی منہا، 23 00:01:18,510 --> 00:01:20,670 اگر ایسا ہے تو آپ کو ان پرانے quizzes میں سے ایک کو کچھ موضوع دیکھ 24 00:01:20,670 --> 00:01:25,380 ہے کہ آپ کو کوئی اندازہ نہیں ہے اس کے بارے میں کیا بات کر رہا ہے، یا تو ہے کہ ہم اس کا احاطہ کیا 25 00:01:25,380 --> 00:01:27,210 یا یہ کہ ہم اس کا احاطہ نہیں کیا. 26 00:01:27,210 --> 00:01:31,110 لیکن میں جائزے کی صورت، اس اتوار، پیر، اور منگل 27 00:01:31,110 --> 00:01:34,770 - کے طور پر اتوار کی رات ایک کورس وسیع جائزہ لینے کے سیشن کے طور پر 28 00:01:34,770 --> 00:01:37,500 کورس ہوم پیج پر وقت اور مقام کا اعلان کیا جائے گا - 29 00:01:37,500 --> 00:01:40,120 آپ سب کو ایک کورس کی تعلیم ساتھیوں کے ساتھ کا جائزہ لینے کا موقع ہے 30 00:01:40,120 --> 00:01:44,830 دونوں کے حصے میں اور ایک مکمل طبقے کے طور پر اس سال کے لئے مال، 31 00:01:44,830 --> 00:01:48,400 اور وہ لوگ ہمیشہ کی طرح ساتھ ساتھ فلمایا. 32 00:01:48,400 --> 00:01:53,380 >> ٹھیک ہے. تو مزید ado کے بغیر، پاس ایک تبصرہ / شامل / چھوڑ ناکام. 33 00:01:53,380 --> 00:01:57,980 تم نے میری نوٹ پچھلی رات دیکھا جا سکتا ہے، اور یہ واقعی میں کچھ اضافی یقین دہانی ہے 34 00:01:57,980 --> 00:02:01,250 کہ اگر آپ خاص طور پر کم آرام دہ اور پرسکون یا درمیان میں کہیں ان میں شامل ہیں 35 00:02:01,250 --> 00:02:04,870 اور آپ کو آپ کے سر پر صرف تھوڑا سا محسوس کر رہے ہو، 36 00:02:04,870 --> 00:02:08,430 احساس ہوتا ہے کہ واقعی بہت عام ہے، اور اس جگہ میں کافی حمایت کا ڈھانچہ ہے، 37 00:02:08,430 --> 00:02:13,530 جن میں سے ایک دفتر گھنٹے فی میرا ای میل آخری رات زیادہ بہتر بنانے پر ارادے تھے، 38 00:02:13,530 --> 00:02:16,520 بھی احساس ہے کہ اس طرح ایک طبقے کے لئے پاس کی طرح ایک اختیار / ناکام 39 00:02:16,520 --> 00:02:21,540 واقعی میں کنارے کو اس طرح ایک کورس کے اتار طریقہ کار کے طور پر مراد ہے، 40 00:02:21,540 --> 00:02:24,200 تاکہ پھر اگر تم نے ان 10، 15، 20 گھنٹے خرچ کر رہے ہیں 41 00:02:24,200 --> 00:02:28,160 کچھ pset کام پر حاصل کرنے کی کوشش کر رہا ہے اور آپ کو معلوم ہے کہ تم راستے سے 90-95 فی صد ہے 42 00:02:28,160 --> 00:02:32,100 لیکن آپ کچھ لات بگ پاس میں نہیں مل / ماڈل کی طرح ٹھیک ہے میں ناکام رہتے ہیں. 43 00:02:32,100 --> 00:02:36,230 >> خیال ہے ہے کہ آپ نے اس طریقہ کار کے ساتھ اپنے دوسرے psets پر توجہ مرکوز تو جا سکتے ہیں 44 00:02:36,230 --> 00:02:39,530 یا جو کچھ بھی ہے کہ آپ پر توجہ مرکوز کرنا چاہتا. سو 45 00:02:39,530 --> 00:02:43,390 تو احساس ہوتا ہے کہ آپ کو اس آنے والے منگل تک - تکنیکی 5th پیر، 46 00:02:43,390 --> 00:02:50,840 لیکن اس دن چھٹی ہے، تو یہ آنے والے منگل - پاس سے سوئچ / درجہ بندی یا اس کے برعکس کرنے میں ناکام رہے. 47 00:02:50,840 --> 00:02:54,450 اور اگر تم precipice پر واقعی ہیں اور مکمل طور پر گر کے بارے میں سوچ رہی ہیں، 48 00:02:54,450 --> 00:02:56,440 برائے مہربانی لیکچر کے بعد کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے متعلق پکڑنے یا مجھے ایک نوٹ چھوڑ. 49 00:02:56,440 --> 00:02:59,990 ہم کم از کم چیٹ سے محبت کرتا ہوں اس سے پہلے کہ آپ adieu بولی تھا. 50 00:02:59,990 --> 00:03:03,470 ٹھیک ہے. تو ہم نے آخری بار سے تربیت پہیوں لینے شروع کر دیا ہے. 51 00:03:03,470 --> 00:03:06,030 خاص طور پر، ہم نے سٹرنگ پر توجہ مرکوز ہے. 52 00:03:06,030 --> 00:03:09,740 جملہ کچھ ہے جو CS50 لائبریری میں اعلان کیا ہے، 53 00:03:09,740 --> 00:03:14,340 خاص طور پر جو ہم نے کہ کہا جاتا cs50.h فائل میں اس ہفتے اور اگلے کو دیکھنے کے لئے شروع کر دیں گے. 54 00:03:14,340 --> 00:03:17,250 لیکن سٹرنگ واقعی صرف کچھ آسان بنانے ہے 55 00:03:17,250 --> 00:03:20,980 جو arcanely حروف * کے طور پر بیان کیا کچھ ہے. 56 00:03:20,980 --> 00:03:24,090 چار ہم سے واقف ہیں. یہ صرف ایک کردار ہے. 57 00:03:24,090 --> 00:03:28,010 لیکن پیر کے طور پر * کیا denoted؟ >> [طالب علم] پوائنٹر. 58 00:03:28,010 --> 00:03:31,290 ایک پوائنٹر. اور ایک پوائنٹر کیا ہے؟ >> [طالب علم] پتہ ہے. 59 00:03:31,290 --> 00:03:33,420 >> یہ ایک پتہ، یاد میں ایک جگہ کی طرح ہے. 60 00:03:33,420 --> 00:03:35,910 ایک ایڈریس یا جگہ یا میموری کیا ہے؟ 61 00:03:35,910 --> 00:03:40,290 ایک بار پھر، ہم سب ایک ٹمٹم یا رام کی 2 گیگا کے ساتھ لیپ ٹاپ ان دنوں میں سب سے زیادہ ہونے کا امکان ہے، 62 00:03:40,290 --> 00:03:44,160 اور اس کا مطلب ہے کہ آپ کے پاس ایک ارب یا 2 ارب بائٹس میموری کی قیمت ہے. 63 00:03:44,160 --> 00:03:46,240 اور یہ واقعی نہیں ہے جو اسے جسمانی طور پر کی طرح لگتا ہے کوئی بات، 64 00:03:46,240 --> 00:03:51,220 لیکن ایمان پر ہے کہ آپ کو انفرادی بائٹس ہے کہ آپ اپنے لیپ ٹاپ ہے سب NUMBER کر سکتے ہیں - 65 00:03:51,220 --> 00:03:54,580 اس یہ بائٹ 0 ہے، 1 بائٹ ہے، بائٹ 2 بلین ہے - 66 00:03:54,580 --> 00:03:56,100 اور یہ کہ بالکل وہی جو ایک کمپیوٹر ہے. 67 00:03:56,100 --> 00:04:00,030 ، جب آپ کسی ایک کردار کے لئے جگہ مختص، مثال کے طور پر 68 00:04:00,030 --> 00:04:02,480 یہ واضح طور پر آپ کے کمپیوٹر کی میموری میں کہیں رہتے ہیں، 69 00:04:02,480 --> 00:04:05,860 اور شاید یہ بائٹ 12345 نمبر پر ہے، 70 00:04:05,860 --> 00:04:08,470 اور یہ کہ کہیں آپ کے کمپیوٹر کی میموری میں ہے یہاں. 71 00:04:08,470 --> 00:04:12,630 اور اس کردار کی تو پتہ 12345 ہے. 72 00:04:12,630 --> 00:04:16,140 >> اب، 0 ہفتے اب ذریعے اس طرح اب تک، ہم واقعی پرواہ نہیں ہے 73 00:04:16,140 --> 00:04:19,170 میموری چیزوں میں ہے کیونکہ ہم عام طور پر علامات کا استعمال کہاں محفوظ ہوتی ہیں، 74 00:04:19,170 --> 00:04:22,540 متغیر، اور اپنی معلومات میں arrays اصل میں حاصل کرنے کے لئے. 75 00:04:22,540 --> 00:04:24,950 لیکن پیر اور زیادہ آج کے طور پر، اب آپ ہیں جا رہے ہیں 76 00:04:24,950 --> 00:04:27,710 لکھنے کے پروگراموں کے ساتھ تمام ابیوینجک صلاحیتوں 77 00:04:27,710 --> 00:04:31,330 واقعی میں ایک کمپیوٹر میموری جوڑتوڑ لیکن تم دیکھ فٹ، 78 00:04:31,330 --> 00:04:33,720 دونوں اچھے مقاصد اور برے کے لئے، 79 00:04:33,720 --> 00:04:39,620 کیڑے یہ سب سیکھنے کے اس مرحلے میں ایک بہت عام نتیجہ ہے. 80 00:04:39,620 --> 00:04:42,460 لیکن کیا یہ واقعی ایک چار * کیا مطلب ہے؟ 81 00:04:42,460 --> 00:04:46,140 چلو آگے واپس جانے کے لئے - اور ہم Binky پر واپس آنے کے طور پر آج وعدہ کیا کریں گے. 82 00:04:46,140 --> 00:04:48,670 کی ایک سادہ مثال کے طور پر چلتے ہیں. 83 00:04:48,670 --> 00:04:53,060 کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے compare.c کے طور پر اس فائل کو محفوظ کریں، اور مجھے کچھ سانچے کوڈ یہاں ملے 84 00:04:53,060 --> 00:05:00,490 تو stdio.h شامل ہیں، مجھے بھی اپنے آپ شامل ہیں دے cs50.h. میں وہاں پر میں زوم کریں گے. 85 00:05:00,490 --> 00:05:05,850 آپ کے وزٹرز کا ریکارڈ رکھا مرکزی int، اہم (باطل) لکھنا شروع، اور اب میں اس طرح کچھ کرنا چاہتے ہیں: 86 00:05:05,850 --> 00:05:13,520 printf ("آپ کے وزٹرز کا ریکارڈ رکھا سٹرنگ دو:") اور میں تو استعمال کریں سٹرنگ کے GetString ہو جاتا ہے 87 00:05:13,520 --> 00:05:16,750 صارف سے ایک سٹرنگ پر حاصل کرنے کے لئے، تو میں ایک دوسرے کے لئے صارف سے کہنے جا رہا ہوں. 88 00:05:16,750 --> 00:05:21,870 ("مجھے ایک اور سٹرنگ دے دو:") اور میں نے ان کو اس کے حاصل کرنے کے لئے GetString کے ذریعے کہنے جا رہا ہوں. 89 00:05:21,870 --> 00:05:27,020 میں نے اسے ٹی کال کریں گے اس لیے کہ ٹی آتا ہے کے بعد اور ایک تار کے لئے ایک اچھا نام ہے، اگر یہ بہت عام ہے. 90 00:05:27,020 --> 00:05:30,030 تو GetString، اور اب میں صرف وویک چیک کرنا چاہتے ہیں اور میں کہنے جا رہا ہوں 91 00:05:30,030 --> 00:05:39,770 اگر (== T) تو میں صرف صارف printf بتانا ("آپ کو ایک ہی چیز ہے \ n ٹائپ") جا رہا ہوں؛ 92 00:05:39,770 --> 00:05:45,520 ورنہ میں باہر کی طرح ("تم ٹائپ کچھ مختلف ن! \") کچھ پرنٹ جا رہا ہوں 93 00:05:45,520 --> 00:05:48,460 یا سزا جو کچھ بھی ہو جائے گا. تو اس طرح کچھ. 94 00:05:48,460 --> 00:05:52,200 اس کے بعد، میں نے ہمیشہ کی طرح 0 واپس کر دیں گے جس میں صرف signified کہ کچھ بھی نہیں برا ہوا، 95 00:05:52,200 --> 00:05:54,400 اور میں آگے جانے کے لئے اور چلانے کے اس پروگرام مرتب کی جا رہی ہوں. 96 00:05:54,400 --> 00:05:56,540 >> لیکن ہم نے پیر کو اس پروگرام بھاگ گیا، 97 00:05:56,540 --> 00:06:00,420 اور اصل میں کہا گیا تھا کہ خوش خوش نہیں ہے اور الوداع الوداع نہیں ہے. 98 00:06:00,420 --> 00:06:03,140 رویے ہم نے دیکھا کچھ اس طرح تھا. 99 00:06:03,140 --> 00:06:11,450 کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے میرے ذریعہ ڈائریکٹری میں جانا، یہاں میں زوم، اور بنانے کا آپس میں موازنہ. 100 00:06:11,450 --> 00:06:14,570 ٹھیک مرتب کیا. مجھے چلانے کا آپس میں موازنہ. مجھے ایک تار دو: ہیلو. 101 00:06:14,570 --> 00:06:16,300 مجھے ایک سٹرنگ دو: ہیلو. 102 00:06:16,300 --> 00:06:18,000 آپ کو کچھ مختلف ٹائپ! 103 00:06:18,000 --> 00:06:22,650 چلو، کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے آسان 50 50، جیسے کچھ کرنے کی کوشش کریں. آپ کو کچھ مختلف ٹائپ! 104 00:06:22,650 --> 00:06:25,740 ہیلو، ہیلو. تو واضح طور پر، کچھ یہاں ہو رہا ہے. 105 00:06:25,740 --> 00:06:28,440 لیکن کیا کیوں کے لئے وضاحت کی تھی؟ 106 00:06:28,440 --> 00:06:33,850 ظاہر ہے، 12 لائن مکمل طور پر غیر فعال ہے. 107 00:06:34,300 --> 00:06:39,430 بنیادی یہاں مسئلہ کیا ہے؟ جی ہاں. >> [طالب علم] یہ پتے کا موازنہ کر رہا ہے. 108 00:06:39,430 --> 00:06:41,850 جی ہاں، بالکل. یہ اصل میں پتے کا موازنہ کر رہا ہے 109 00:06:41,850 --> 00:06:44,580 جس میں خوش اور خوش جمع کیے جاتے ہیں. 110 00:06:44,580 --> 00:06:48,290 یہ خط موازنہ نہیں ہے خوش بار بار 111 00:06:48,290 --> 00:06:52,370 کیونکہ اصل میں کیا ہوا ہے، اس وقت ہم ہے GetString کا استعمال کرتے ہوئے - 112 00:06:52,370 --> 00:06:56,130 یہ بلیکبورڈ پھر ہمارے کمپیوٹر میموری ہے، 113 00:06:56,130 --> 00:07:00,100 اور دو کا کہنا ہے کہ میں ایک متغیر S اعلان کے بعد GetString کہتے ہیں. 114 00:07:00,100 --> 00:07:01,930 کیا میری یاداشت کی طرح لگتی ہے؟ 115 00:07:01,930 --> 00:07:07,070 چلو منمانے کا کہنا ہے کہ کے اس طرح لگ رہا ہے. یہ ایک مربع ہے. 116 00:07:07,070 --> 00:07:09,040 کسی بھی وقت اور بہت زیادہ میں سکرین پر میموری کا ایک ٹکڑا تیار ہے 117 00:07:09,040 --> 00:07:12,860 اگر یہ 32 بٹیں میں ہے آلے میں اس طرح چوکوں ڈرائنگ یقینا کیونکہ 118 00:07:12,860 --> 00:07:17,380 پوئینٹر، پتہ، 32 بٹس ہے. یہ ایک int کے طور پر ایک ہی ہے. 119 00:07:17,380 --> 00:07:19,420 اس کمپیوٹر سسٹم کی بنیاد پر مختلف ہوتی ہیں کر سکتے ہیں. 120 00:07:19,420 --> 00:07:24,630 ، تم میں سے وہ لوگ جو حقیقت یہ ہے کہ اپنے میک یا PC 64 بٹس ہے کے ساتھ vaguely واقف ہیں 121 00:07:24,630 --> 00:07:28,120 کہ اصل میں کرنا ہے کہ آپ کے کمپیوٹر میں 64 بٹ اشارہ کا استعمال کرتے ہوئے کر رہا ہے، 122 00:07:28,120 --> 00:07:33,730 64 بٹ کے پتے، اور اس بات کا upsides میں اپنے کمپیوٹرز ہے 123 00:07:33,730 --> 00:07:35,560 پرانے سے بہت زیادہ RAM کر سکتے ہیں. 124 00:07:35,560 --> 00:07:39,240 لمبی کہانی مختصر ہے، دن میں واپس جب کمپیوٹر صرف 32 بٹیں کا استعمال کیا 125 00:07:39,240 --> 00:07:42,740 پتے کی نمائندگی کرنے کے لئے، آپ بائٹس کی سب سے بڑی تعداد کی نمائندگی کر سکتا 126 00:07:42,740 --> 00:07:46,280 اس صورت میں تھا جو اگر آپ کے 32 بٹیں ہیں؟ 127 00:07:46,280 --> 00:07:49,590 4 سو ارب، ٹھیک ہے، کیونکہ 32 2 4 ارب ہے. 128 00:07:49,590 --> 00:07:51,370 یہ تعداد نصاب میں بار بار چلنے والی ہے. 129 00:07:51,370 --> 00:07:55,240 >> تو اگر آپ کے پاس صرف 32 بٹس، سب سے زیادہ تعداد ہے جو تم شمار کر سکتے ہیں ہے 4 ارب تقریبا. 130 00:07:55,240 --> 00:07:58,750 لیکن یہ چند سال پہلے تک کمپیوٹر کی بنیادی حد کے تھے 131 00:07:58,750 --> 00:08:01,180 ، اگر آپ کو 4 ارب کے طور پر اعلی کے طور پر صرف شمار کر سکتے ہیں کیونکہ 132 00:08:01,180 --> 00:08:05,270 یہ بات اگر آپ کو RAM 8 گیگا بائٹ یا اس سے بھی RAM کے 5 گیگا خریدتے نہیں ہے. 133 00:08:05,270 --> 00:08:07,780 تم نے اس اعلی شمار نہیں ہے، تو کر سکتے ہیں یہ بیکار تھا. 134 00:08:07,780 --> 00:08:11,430 آپ صرف آپ کے کمپیوٹر کی میموری کے پہلے 3 یا 4 گیگا بائٹ تک رسائی حاصل کر سکتے ہیں. 135 00:08:11,430 --> 00:08:14,410 یہ ایک مسئلہ کی کم ہے، اور آپ MacBook پیشہ اور Dells خرید سکتے ہیں 136 00:08:14,410 --> 00:08:17,680 RAM 8 گیگا بائٹ سے بھی زیادہ یا ان دنوں کے ساتھ. 137 00:08:17,680 --> 00:08:24,100 لیکن اگر میں اس پروگرام میں بہت صرف ایک پوائنٹر مختص، ایک پوائنٹر کے بلایا، 138 00:08:24,100 --> 00:08:28,370 اس طرح سکرین پر دیکھو، کیونکہ درحقیقت ہم واپس چھیل اس پرت کی ضرورت ہے کر سکتے ہیں. 139 00:08:28,370 --> 00:08:33,520 میں کہہ رہا ہوں سٹرنگ رہو، لیکن پیر، سٹرنگ واقعی میں چار * ہے، 140 00:08:33,520 --> 00:08:35,590 کچھ کردار کا پتہ ہے. 141 00:08:35,590 --> 00:08:39,280 تو کی کہ اس تربیت کا پہیا اتار اگرچہ ہم اب GetString استعمال کرتے ہوئے جاری رکھیں گے. 142 00:08:39,280 --> 00:08:42,600 لہذا میں نے کا اعلان کیا ہے، اور یہ میموری کا ایک حصہ ہے، 32 بٹیں ہے. 143 00:08:42,600 --> 00:08:47,370 ڈیفالٹ کے ذریعہ یاد کیا میں یہاں ہے؟ >> [اشراوی طالب علم کے جواب] 144 00:08:47,370 --> 00:08:50,040 یہ کیا ہے؟ >> [طالب علم] ردی کی ٹوکری. >> ردی کی ٹوکری. بالکل. 145 00:08:50,040 --> 00:08:54,610 اگر آپ پروگرامر ایک متغیر میں ایک قیمت کو نہیں، کون جانتا ہے کہ یہ کیا ہے؟ 146 00:08:54,610 --> 00:08:57,990 جو کبھی کبھی تم خوش ہو جاؤ اور اس 0، ایک اچھی، صاف ڈیفالٹ قدر کی طرح ہے، 147 00:08:57,990 --> 00:09:00,310 لیکن پیر کے طور پر ہم نے دیکھا ہے، کبھی کبھی یہ مکمل طور پر بیکار کی ہے، 148 00:09:00,310 --> 00:09:04,130 کچھ بہت بڑا مثبت یا منفی نمبر ہے کہ کہاں سے آیا ہے؟ 149 00:09:05,350 --> 00:09:07,010 جی ہاں. >> [طالب علم] سے پہلے تقریب. >> جی ہاں. 150 00:09:07,010 --> 00:09:10,170 >> اکثر، تقریب اس سے پہلے کہ وجہ سے یاد کہا جاتا ہو گیا ہے 151 00:09:10,170 --> 00:09:13,920 کے طور پر آپ کو یاد میں افعال کو کہتے ہیں، انہوں نے نیچے سے زیادہ سے زیادہ کی جگہ لے، 152 00:09:13,920 --> 00:09:17,040 اور جیسے ہی تقریب کی واپسی کے طور پر، کہ میموری reused ہو جائے 153 00:09:17,040 --> 00:09:20,890 اگلے آدمی کو بلایا ہو جاتا ہے کی طرف سے، آپ کی میموری کا ایک ہی ٹکڑا کون استعمال کر رہا ہے. 154 00:09:20,890 --> 00:09:23,450 اور اگر تم بائیں وہاں ردی کی ٹوکری، سابق اقدار ہے، 155 00:09:23,450 --> 00:09:28,190 ہم جب واقعی ہم کچھ نہیں ڈال ہے وہاں کچھ قدر ہونے S غلطی ہو سکتا ہے. 156 00:09:28,190 --> 00:09:30,960 تو اس وقت ہمارے RAM اس طرح لگ رہا ہے. 157 00:09:30,960 --> 00:09:36,030 اب ہم 7 لائن کے دائیں ہاتھ کی طرف پر GetString بلا رہے ہیں، 158 00:09:36,030 --> 00:09:40,150 جو ہم نے ہفتے کے لئے اب کیا کر رہی، لیکن کیا واقعی کر GetString ہے؟ 159 00:09:40,150 --> 00:09:43,350 GetString CS50 ملازمین کی طرف سے لکھا گیا ایک چھوٹا سا بڑا ہے 160 00:09:43,350 --> 00:09:46,500 کہ میں جیسے ہی صارف شروع ہوتا ہے ٹائپ چابیاں اور ہٹ درج کریں، 161 00:09:46,500 --> 00:09:50,010 GetString باہر کے اعداد و شمار کتنے keystrokes صارف زدہ، 162 00:09:50,010 --> 00:09:53,360 میں کتنے حروف کے لئے RAM مختص کرنے کی ضرورت ہے ہے. 163 00:09:53,360 --> 00:09:55,660 اور جہاں کہ رام سے آتا ہے، کون جانتا ہے؟ 164 00:09:55,660 --> 00:09:58,930 یہ آپ کے کمپیوٹر کی 2 گیگا بائٹ یا میموری کی whatnot میں کہیں ہے. 165 00:09:58,930 --> 00:10:05,200 لیکن لگتا ہے کہ کمپیوٹر خوش لفظ کے لئے جگہ مل گئی یہیں. 166 00:10:05,200 --> 00:10:08,710 لفظ میں ٹائپ H-E-L-L O-. 167 00:10:08,710 --> 00:10:13,510 اور اگر ہم حروف کی ترتیب کے طور پر اس کی اپنی طرف متوجہ، ہم اس طرح اپنی طرف متوجہ کر سکتے ہیں. 168 00:10:13,510 --> 00:10:17,860 لیکن میں 1 اضافی بات کرنے کی ضرورت ہے. C میں کوئی تار کے آخر میں کیا ہے؟ 169 00:10:17,860 --> 00:10:20,710 شہوت انگیز null کردار، جو ہم \ 0 لکھنے. 170 00:10:20,710 --> 00:10:23,980 یہ تکنیکی طور پر نمبر 0 ہے، لیکن الٹا سلیش تمام واضح کرتا ہے 171 00:10:23,980 --> 00:10:28,150 کہ یہ لفظی 0 تعداد عددی 0 ہے؛ 172 00:10:28,150 --> 00:10:32,440 یہ ہے، مثال 0، اقتباس، unquote ہے کہ آپ کو کی بورڈ میں ٹائپ کر سکتے ہیں کے لئے نہیں ہے. 173 00:10:32,440 --> 00:10:33,940 تو یہ خوش ہے. 174 00:10:33,940 --> 00:10:36,350 >> اور کیا ہم نے پیر کو کہا ہے کہ GetString کی طرح ایک تقریب 175 00:10:36,350 --> 00:10:39,580 ان تمام ہفتے ہوتا ہے اصل میں واپس لوٹنے؟ 176 00:10:39,580 --> 00:10:43,960 یہ SE فی ایک تار واپس لوٹنے نہیں ہے کیونکہ یہ واقعی نہیں ہے کا مطلب 177 00:10:43,960 --> 00:10:47,710 کیونکہ ڈور کا کوئی وجود نہیں ہے. وہ CS50 لائبریری میں تعمیر کی طرح ہیں. 178 00:10:47,710 --> 00:10:51,300 واقعی ایک تار کیا ہے، تکنیکی طور پر؟ >> [طالب علم] یہ پہلا کردار ہے. 179 00:10:51,300 --> 00:10:55,950 بالکل. یہ بہت آسانی سے پہلی کردار کا پتہ ہے کہ صارف اندر ٹائپ 180 00:10:55,950 --> 00:11:02,810 اگر ایسا ہے تو میرا لفظ خوش بائٹ نمبر 123 میں اور پھر بائٹ 124 نمبر پر ختم ہوتا ہے 181 00:11:02,810 --> 00:11:08,320 125، 126، اور وغیرہ، اگر 0 سے میں نے ابھی میرے بائٹس کی تعداد 182 00:11:08,320 --> 00:11:12,650 کیا واقعی GetString واپس آ رہا ہے وہ لفظی تعداد 123 ہے. 183 00:11:12,650 --> 00:11:19,270 تو کیا ہو جاتا ہے کے میں ڈال دیا تعداد 123،، خط H نہیں لفظ ہے ہیلو، 184 00:11:19,270 --> 00:11:23,130 بہت آسانی سے پتہ جس میں خوش کے پہلے حرف کو تلاش کر سکتے ہیں. 185 00:11:23,130 --> 00:11:26,500 لیکن اس کافی کی طرح نہیں لگتا ہے. میں آپ کو ایک تار کے لئے کہا، کردار نہیں. 186 00:11:26,500 --> 00:11:32,970 تو ہم یا کمپیوٹر کو کیسے پتہ کہ ELLO کی قسم H کے ساتھ آئی ہے؟ 187 00:11:35,760 --> 00:11:37,460 معاہدے کی طرح ہم نے کیا کیا ہے؟ جی ہاں. 188 00:11:37,460 --> 00:11:40,100 [طالب علم] یہ خود کہہ رہا ہوں کچھ اور حروف کو تلاش کرنے کے لئے رہتی ہے. بالکل ٹھیک ہے. >> 189 00:11:40,100 --> 00:11:44,570 >> اس کنونشن کے انسانی کمپیوٹر ہے جس میں جب آپ ڈور سے دوچار ہیں، 190 00:11:44,570 --> 00:11:49,410 دوسری صورت میں اب چار ستاروں کے طور پر کہا جاتا ہے، آپ کو صرف یہ معلوم کرنا پڑے گا 191 00:11:49,410 --> 00:11:54,350 زندگی میں ہر سٹرنگ کے اختتام واقعی صرف لوپ کے لئے ایک کے ساتھ اس پر iterating کہاں ہے، 192 00:11:54,350 --> 00:11:57,820 تھوڑی دیر لوپ، جو کچھ بھی، تاکہ جب آپ کو سٹرنگ کے اختتام تلاش 193 00:11:57,820 --> 00:12:02,160 اب آپ اس سے اندازہ کر سکتے ہیں، اوہ، مکمل لفظ خوش تھا. 194 00:12:02,160 --> 00:12:04,820 پیشگی پروگرامنگ کے تجربے کے ساتھ تم میں سے وہ لوگ جاوا میں جانتے ہو 195 00:12:04,820 --> 00:12:09,880 آپ کی لمبائی صرف فون اور دیگر زبانوں میں آپ اس کی لمبائی یا اسی طرح کہہ سکتے ہیں کر سکتے ہیں. 196 00:12:09,880 --> 00:12:14,060 ایسا اس لئے ہے کیونکہ زبانوں کا ایک بہت میں، خاص طور پر چیزوں کو بلایا زبانوں شئی کو پر مبنی ہے، 197 00:12:14,060 --> 00:12:18,580 کسی چیز کی لمبائی ڈیٹا خود کا ٹکڑا کی محفوظ اندر کی طرح ہے، 198 00:12:18,580 --> 00:12:24,000 ہم محفوظ شناخت اور نام اور پیر کے روز ایک طالب علم کے اندر گھروں بہت پسند کرتا ہوں. 199 00:12:24,000 --> 00:12:28,700 لیکن C بہت کم سطح ہے. کوئی اشیاء یا کلاس ہیں، اگر آپ ان شرائط کو سنا سے پہلے ہے. 200 00:12:28,700 --> 00:12:31,490 آپ کے میموری پتوں ہے. 201 00:12:31,490 --> 00:12:35,540 تو یہ دلچسپ اعداد و شمار کرنے والے ڈھانچے کی نمائندگی کرتے پرانے زمانے کی راہ کی طرح ہے. 202 00:12:35,540 --> 00:12:38,760 آپ پہلے کردار کا پتہ کی طرح شروع کی قیمت ہے 203 00:12:38,760 --> 00:12:42,340 اور پھر کچھ صوابدیدی کنونشن کہ سب پر عمل کرنے سے اتفاق کرتے ہیں. 204 00:12:42,340 --> 00:12:46,420 تو کس طرح تار کی لمبائی کو لاگو کیا جاتا ہے، ہم نے تجویز کیا؟ 205 00:12:46,420 --> 00:12:51,360 Strlen، strlen، جو تم میں سے بعض اب چند بار استعمال کیا ہے. یہ بہت آسان ہے، ٹھیک ہے؟ 206 00:12:51,360 --> 00:12:53,060 یہ کوڈ کا 2 لائنیں کی طرح ہے. 207 00:12:53,060 --> 00:12:56,140 یہ بہت کسی قسم کے کے لئے لوپ ہے شاید ایک اضافی مقامی متغیر کے ساتھ،. 208 00:12:56,140 --> 00:13:00,540 لیکن strlen پوائنٹر لے تو شروع 0 \ تلاش ہے. 209 00:13:00,540 --> 00:13:05,190 >> اور جیسے ہی کے طور پر یہ پتہ چلا ہے، یہ اقدامات ہیں جو اس سٹرنگ میں لیا ہے کی کل تعداد واپس کر سکتے ہیں. 210 00:13:05,190 --> 00:13:07,150 تو ہم نے اس سے یہ نتیجہ نکالنا ہے کہ اگلے پر جاتا ہے کر سکتے ہیں. 211 00:13:07,150 --> 00:13:11,850 تو فرض کریں کہ میں ٹی جیسا کہ میں نے اوپر 10 میں نے کیا ہے کا اعلان. 212 00:13:11,850 --> 00:13:14,280 یہ کچھ ردی کی ٹوکری کی قیمت ہے. پہلے کون جانتا ہے؟ 213 00:13:14,280 --> 00:13:18,490 لیکن میں 10 لائن کے دائیں ہاتھ کی طرف دوبارہ GetString فون کر رہا ہوں. 214 00:13:18,490 --> 00:13:20,050 جہاں یہ ختم ہوتا ہے کون جانتا ہے؟ 215 00:13:20,050 --> 00:13:23,830 چلو منمانے کا کہنا ہے کہ ہے کہ آپریٹنگ سسٹم کے لئے یہاں راستہ کمرے مل گیا. 216 00:13:23,830 --> 00:13:28,610 میں اتفاق H-E-L-L O-ٹائپ دوبارہ، 217 00:13:28,610 --> 00:13:31,260 اور ہم اسی طرح کی تصویر کے اپنی طرف متوجہ کر سکتے ہیں. 218 00:13:31,260 --> 00:13:34,290 لیکن حقیقت یہ ہے کہ میں نے redrawn اس تصویر ہے جان بوجھ کر ہے 219 00:13:34,290 --> 00:13:37,720 کیونکہ وہ اس سے مختلف خوش ہے 220 00:13:37,720 --> 00:13:43,920 تو یہاں یہ 456 مقام ہو سکتا ہے، یہ 457 ہے، اور وغیرہ. 221 00:13:43,920 --> 00:13:47,170 تو کیا دیا ہے جہاں ایک بار سوالیہ نشان تھا ہو جاتا ہے؟ 222 00:13:47,170 --> 00:13:50,190 اس 456 صورت میں. 223 00:13:50,190 --> 00:13:53,540 ہم نے ان کی تعداد کو منمانے اٹھا رہے ہیں آج کے بعد میں کیونکہ 224 00:13:53,540 --> 00:13:57,110 ہم کچھ کا ایڈریس کیا ہے کے بارے میں بہت کچھ پرواہ نہیں کر رہے ہیں. 225 00:13:57,110 --> 00:14:02,690 ہم پرواہ ہے کہ ہم خوش طرح اعداد و شمار میں سے کچھ حصہ کے ایڈریس اعداد و شمار کر سکتے ہیں. 226 00:14:02,690 --> 00:14:07,100 >> تو واقعی سب سے زیادہ لوگوں کو کمپیوٹر سائنس میں جب میموری پتوں کے بارے میں میں بات کر رہے 227 00:14:07,100 --> 00:14:10,210 اور خاص طور پر اشارہ کے بارے میں بات چیت کرتے ہوئے 228 00:14:10,210 --> 00:14:14,220 بجائے زحمت 123 figuring - کسے پرواہ ہے جہاں یہ سب اصل میں ہے، 229 00:14:14,220 --> 00:14:17,440 ہم صرف یہ جانتے ہیں کہ یہ کسی عددی پتے پر ہے - 230 00:14:17,440 --> 00:14:22,180 ہم دنیا کو آسان بنانے اور صرف اتنا کہنا ہے کہ کے اس کردار کی طرف اشارہ کرتے ہوئے ہے 231 00:14:22,180 --> 00:14:25,080 اور ٹی اس کردار کی طرف اشارہ کرتے ہوئے ہے. 232 00:14:25,080 --> 00:14:27,430 اور حقیقت یہ ہے کہ یہ ایک تیر ہے بہت جان بوجھ ہے 233 00:14:27,430 --> 00:14:31,610 کیونکہ لفظی اب H اور ٹی میں اشارہ کر رہا ہے دوسرے H میں اشارہ کر رہا ہے 234 00:14:31,610 --> 00:14:34,720 کیونکہ اس دن کے آخر میں بات نہیں کیا پتہ ہے، 235 00:14:34,720 --> 00:14:40,240 لیکن یہ بات ہے کہ ہم کوڈ کے کچھ حصے کے ساتھ اس پتہ پر اظہار کی صلاحیت ہے کرتا ہے. 236 00:14:40,240 --> 00:14:42,730 ہم ان پتوں کو واقعی نہیں ہے ابھی تک ہیرا پھیری 237 00:14:42,730 --> 00:14:47,770 ہم تو دیکھو، ہم کہاں interject کر سکتے ہیں اور اشارہ کے ساتھ کام کرتے ترتیب کر سکتے ہیں کریں گے، 238 00:14:47,770 --> 00:14:52,030 لیکن اب لائن میں لفظی 12 کیا اقدار ہم موازنہ کر رہے ہیں 239 00:14:52,030 --> 00:14:55,500 12 سطر میں اس کہانی کے مطابق ہے؟ 240 00:14:56,570 --> 00:15:01,290 ہم کہہ رہے ہو 123 456 برابر برابر ہے رہے ہیں؟ اور یہ یقینی طور پر نہیں ہوتا. 241 00:15:01,290 --> 00:15:05,320 اور conceptually بھی یقینی طور پر اس پوائنٹر نہیں ہے اس کے طور پر ایک ہی 242 00:15:05,320 --> 00:15:09,500 کیونکہ تم نے فون کیا دو مرتبہ GetString، اور GetString سپر ہوشیار بننے کی کوشش نہ کرتا، 243 00:15:09,500 --> 00:15:12,470 اس کا احساس کرنے کی کوشش نہیں کرتا، اوہ، آپ خوش 5 منٹ پہلے ٹائپ؛ 244 00:15:12,470 --> 00:15:15,090 ، مجھے تم سے ایک ہی پوائنٹر دے جیسا کہ میں نے آپ کو پہلے دیا 245 00:15:15,090 --> 00:15:18,450 یہ صرف میموری کا ایک نیا حصہ ہر بار جب آپ یہ کہتے ہیں مختص. 246 00:15:18,450 --> 00:15:20,350 >> تو ہم کس طرح اس مسئلہ کو حل کر سکتا ہوں؟ 247 00:15:20,350 --> 00:15:24,270 اگر اعلی سطح میں ڈور خوش خوش کا آپس میں موازنہ کرنا چاہتے ہیں - 248 00:15:24,270 --> 00:15:28,680 میں اشارہ کے بارے میں کوئی پرواہ نہیں ہے - میں سوال کے جواب کے بارے میں کس طرح کرتے ہیں، 249 00:15:28,680 --> 00:15:31,980 کیا صارف ایک ہی چیز ٹائپ کریں؟ یہاں کیا ضروری ہے؟ جی ہاں. 250 00:15:31,980 --> 00:15:35,200 [طالب علم] ایک تقریب کا استعمال کریں. >> میں باکس کے ایک تقریب کا استعمال کر سکتے ہیں. 251 00:15:35,200 --> 00:15:38,170 میں strcmp، S-T-R-C M-P-نامی ایک تقریب کا استعمال کر سکتے ہیں، 252 00:15:38,170 --> 00:15:41,190 کہا کہ سٹرنگ کا آپس میں موازنہ کرنے کے مختصر ورژن. 253 00:15:41,190 --> 00:15:45,070 اور مثال کے طور پر اگر ہم میں جانے، 2 موازنہ جو آج handouts کے درمیان ہے، 254 00:15:45,070 --> 00:15:46,690 میں بالکل وہی کرتے ہیں. 255 00:15:46,690 --> 00:15:51,750 میں نیچے یا 26 اور سب کچھ سطر نمبر 1 سے ہی رکھا ہے، 256 00:15:51,750 --> 00:15:54,360 اور اب محسوس یہ حصہ صرف تھوڑا سا تبدیل کر دیا گیا ہے. 257 00:15:54,360 --> 00:15:57,690 چلو، ایک لمحے کے لئے 28 لائن کو نظر انداز کریں اور اس پر صرف توجہ مرکوز ہے. 258 00:15:57,690 --> 00:16:00,410 پیر کے روز کیا ہم نے کہا کہ STR کا موازنہ کرتا ہے؟ 259 00:16:00,410 --> 00:16:05,200 یہ اس کیس میں 2 اشارہ، اور ٹی لینے کے عمل کو برقرار رکھتی ہے، 260 00:16:05,200 --> 00:16:08,480 قسم کی تقریبا ان 2 خط پر اپنی انگلی ڈال 261 00:16:08,480 --> 00:16:11,530 اور جو اسے کیا کرنا چاہئے لوپ کے لئے تھوڑی دیر لوپ یا ایسا کچھ ہے، 262 00:16:11,530 --> 00:16:16,050 اور اس کا کہنا ہے کہ یہ وہی ہے؟ اگر ایسا ہے تو، یہ انگلیاں یا آگے اشارہ چلتا ہے. 263 00:16:16,050 --> 00:16:17,970 یہ وہی ہے، یہ ایک ہی، ان، اسی 264 00:16:17,970 --> 00:16:22,710 یہ وہی ہے، یہ وہی ہے؟ اہ اور میں اور ٹی دونوں میں سٹرنگ کے آخر میں ہوں. 265 00:16:22,710 --> 00:16:26,780 میں کوئی تضادات نہیں مل سکا ہے. جی ہاں، یہ ڈور ایک ہی ہیں. 266 00:16:26,780 --> 00:16:31,940 اور کیا STR واپسی اگر 2 ڈور ایک ہی ہیں آپس میں موازنہ، بظاہر؟ زیرو. 267 00:16:31,940 --> 00:16:35,900 تو 0 اس معاملے میں اچھا ہے کیونکہ اگر یہ -1 یا +1 واپس، 268 00:16:35,900 --> 00:16:40,560 اس کا مطلب یہ ہے کہ S ٹی حروف تہجی کے پہلے یا ٹی کے بعد آنے کے لئے ہوتا ہے. 269 00:16:40,560 --> 00:16:43,760 اور مفید ہے، اس لئے ایک تقریب ہے جو آپ کو بتاتا ہے جو سٹرنگ سے پہلے آتا ہے 270 00:16:43,760 --> 00:16:46,720 یا اس کے بعد لغت میں؟ 271 00:16:46,720 --> 00:16:48,740 [طالب علم] تلاش ہو رہی ہے. >> تلاش اور چھانٹ رہا ہے. 272 00:16:48,740 --> 00:16:51,730 >> تو آپ کو بائنری تلاش یا بلبلا طرح کی طرح کام کرتے ہیں یا طرح ضم کر سکتے ہیں 273 00:16:51,730 --> 00:16:53,230 تم ان چیزوں کا آپس میں موازنہ کہاں ہے. 274 00:16:53,230 --> 00:16:56,420 ابھی تک ہم کچھ کونے کونے کاٹ کی طرح ہے اور صرف حل کرنے کے بارے میں بات کی 275 00:16:56,420 --> 00:16:59,430 تعداد کے تناظر میں کیونکہ یہ اچھا اور آسان ہے کے بارے میں بات کرنے کے لئے، 276 00:16:59,430 --> 00:17:02,430 لیکن آپ ڈور، سیب، اور کیلے ضرور موازنہ کر سکتے ہیں، 277 00:17:02,430 --> 00:17:05,349 اگر سیب کیلا کے سامنے آنے کی، اسی طرح جانا جاتا ہے کیونکہ 278 00:17:05,349 --> 00:17:09,319 تاروں آپ کو صرف روب کی طرح یاد میں ارد گرد ویڈیو میں کیا منتقل ضم طرح سے کر سکتے ہیں 279 00:17:09,319 --> 00:17:15,880 اور ہم انتخاب طرح، اندراج کی طرح، اور بلبلا طرح کے ساتھ اسٹیج پر یہاں کیا. 280 00:17:15,880 --> 00:17:18,710 تو اور کہاں ہم اس کو لے جا سکتے ہیں؟ چلو، اس کی کوشش ہے. 281 00:17:18,710 --> 00:17:23,980 چلو طرح کی ہے کہ ایک لمحے کے لئے سبق کو بھول جاؤ اور اب کوشش کریں اور مندرجہ ذیل کام کریں 1.c کاپی. 282 00:17:23,980 --> 00:17:26,800 اوپر 21 میں پرنٹ کچھ کہہ رہی ہوں، 283 00:17:26,800 --> 00:17:28,520 تو میں صارف سے ایک تار ہو رہا ہے، 284 00:17:28,520 --> 00:17:30,690 تو میں اس کی جانچ پڑتال کر رہا ہوں. 285 00:17:30,690 --> 00:17:33,620 ہم اس عادت میں واقعی نہیں ہے ابھی تک ہو گیا، لیکن اب ایسا. 286 00:17:33,620 --> 00:17:40,990 واپس اس پرت کے چھیل دراصل دو. یہ واقعی میں چار * ہے. یہ آدمی واقعی میں چار * ہے. 287 00:17:40,990 --> 00:17:45,690 تو اس کے == نل اگر چیک کرنے کا کیا مطلب ہے؟ 288 00:17:45,690 --> 00:17:48,380 یہ پتہ چلا ہے کہ آپ GetString طرح ایک تقریب میں جب فون 289 00:17:48,380 --> 00:17:51,540 یا اس سے زیادہ عام طور پر صرف ایک کمپیوٹر سے آپ کو کچھ یاد دینے کا مطالبہ 290 00:17:51,540 --> 00:17:53,030 کچھ گڑبڑ ہو سکتی ہے. 291 00:17:53,030 --> 00:17:56,630 تم پاگل ہو اور میموری کا ایک terabyte کے لئے کمپیوٹر کو پوچھ سکتے ہیں 292 00:17:56,630 --> 00:18:01,780 میموری کی شراکت صرف کمپیوٹر میں موجود نہیں ہیں کے کھربوں کے لئے مطالبہ کرتے ہوئے، 293 00:18:01,780 --> 00:18:05,130 لیکن GetString اور دیگر کام کرتا ہے تم پر چللا کے کچھ طریقہ کی ضرورت ہے 294 00:18:05,130 --> 00:18:06,820 اگر آپ بہت زیادہ کے لئے کہا جاتا ہے. 295 00:18:06,820 --> 00:18:10,450 اور جس طرح سے GetString یہ ہے ہے اگر آپ کو مزید میموری کے لئے کہا ہے 296 00:18:10,450 --> 00:18:14,250 سے کمپیوٹر میں دستیاب ہے، یہاں تک کہ اگر اس کے سپر، سپر کم امکان ہے 297 00:18:14,250 --> 00:18:17,730 کیونکہ ہم میں سے کوئی بھی ایک ٹریلین حروف ٹائپ کریں تو درج کریں مارا جا رہے ہیں، 298 00:18:17,730 --> 00:18:21,980 لیکن کم امکان ہے اگرچہ ہو سکتا ہے، میں اب بھی اس کے لئے صرف میں کیس چیک کرنے کے لیے کرنا چاہتے ہیں، 299 00:18:21,980 --> 00:18:26,120 اور خصوصی قدر کہ GetString، جواب، اور دیگر افعال کی واپسی 300 00:18:26,120 --> 00:18:30,630 اگر کچھ گڑبڑ گیا ہے تمام بڑے حروف میں نل ہے. 301 00:18:30,630 --> 00:18:36,520 >> اور کیا نل ہے؟ نل بہت پوائنٹر کی نمائندگی کرنے ہوتا ہے. یہ میموری ایڈریس 0 ہے. 302 00:18:36,520 --> 00:18:40,800 دنیا منمانے کہ فیصلہ کیا ہے، اگر یہ اپنے کمپیوٹر کی میموری ہے - تم جانتے ہو کیا؟ - 303 00:18:40,800 --> 00:18:46,260 ہم صرف ہر کمپیوٹر کی میموری کی 1 بائٹ چوری کرنے جا رہے ہیں، اور یہ 0 محل وقوع ہے. 304 00:18:46,260 --> 00:18:49,560 ہم یہ نل کی عرفیت دینے جا رہے ہیں، اور ہم وعدہ جا رہے ہیں 305 00:18:49,560 --> 00:18:52,660 کہ ہم واقعی اصلی ڈیٹا کو کبھی نہیں وہاں ڈال دیں گے 306 00:18:52,660 --> 00:18:56,770 کیونکہ ہم صرف منمانے ایک خاص قیمت، 0، ارف نل کی ضرورت ہے، 307 00:18:56,770 --> 00:19:00,230 تا کہ ہم صارفین کو چللاو اگر کچھ غلط ہو جاتا ہے کر سکتے ہیں. 308 00:19:00,230 --> 00:19:03,590 ورنہ آپ نہیں جانتے 0 مطلب یہاں کچھ ڈال سکتا ہے 309 00:19:03,590 --> 00:19:05,490 یا تو اس کا مطلب یہ ہے کچھ غلط ہو گیا ہے؟ 310 00:19:05,490 --> 00:19:09,190 ہم سب اس بات پر متفق کہ نل کا مطلب کچھ بھی نہیں واپس کر دیا گیا تھا ہے، 311 00:19:09,190 --> 00:19:11,700 نہیں اصل ایڈریس کو واپس کیا گیا تھا. 312 00:19:11,700 --> 00:19:15,210 اب، میں یہاں صرف میرا میں انسانی کنونشن اپنانے رہا ہوں اہم سے 1 واپس 313 00:19:15,210 --> 00:19:17,040 اگر کچھ غلط ہو جاتا ہے. 314 00:19:17,040 --> 00:19:20,650 ایسا اس لئے ہے کیونکہ اہم واپسی کنونشن 0 اگر اچھی واپس، 315 00:19:20,650 --> 00:19:22,990 1 یا کچھ اگر برا دیگر قیمت. 316 00:19:22,990 --> 00:19:28,200 لیکن GetString اور کسی بھی تقریب کہ میموری نل کی واپسی میں سودے اگر کچھ برا ہوتا ہے. 317 00:19:28,200 --> 00:19:33,480 >> ٹھیک ہے. تو بدقسمتی سے، 27 لائن، ہے اگرچہ سپر آسان ہے، مکمل طور پر سٹرنگ کو کاپی کرنے میں ناکام ہے. 318 00:19:33,480 --> 00:19:35,740 کیوں؟ ہم دیکھتے ہیں یہ مندرجہ ذیل کر سکتے ہیں. 319 00:19:35,740 --> 00:19:40,120 میں 27 سطر میں دعوی کے کی ایک کاپی بنانے کے لئے اور اسے ٹی بلا رہا ہوں. 320 00:19:40,120 --> 00:19:45,790 تو میں 2 ڈور اس وقت کے لئے صارف کا مطالبہ نہیں کر رہا ہوں، میں صرف کی میں قدر کہہ رہا ہوں 321 00:19:45,790 --> 00:19:47,870 ٹی میں اچھی کارکردگی کا مظاہرہ کے طور پر کیا جائے چاہئے. 322 00:19:47,870 --> 00:19:52,890 تو اب صرف مظاہرہ یہ کس طرح ٹوٹا ہوا ہے، لائن میں، 29 آگے ہے کہ میں کیا کر رہا ہوں؟ 323 00:19:52,890 --> 00:19:56,980 پہلے میں کی جانچ پڑتال کر رہا ہوں اگر ٹی کی لمبائی 0 سے بڑا ہے. 324 00:19:56,980 --> 00:19:59,330 کچھ سٹرنگ ہے. صارف اندر کچھ ٹائپ 325 00:19:59,330 --> 00:20:03,410 کر 32 لائن، بظاہر کیا ہے؟ 326 00:20:03,410 --> 00:20:08,910 [اشراوی طالب علم کے جواب] >> حق ہے. تم نے یہ کیا میں نے کہا کہ یہ کر رہی ہے سے قسم کا نتیجہ نکالنا کر سکتے ہیں. 327 00:20:08,910 --> 00:20:13,200 لیکن تکنیکی طور پر، یہ کیا کر رہی ہے؟ T [0] کیا کی نمائندگی کرتا ہے؟ 328 00:20:13,200 --> 00:20:15,140 [طالب علم] zeroth کردار. >> [Malan] zeroth کردار. 329 00:20:15,140 --> 00:20:19,620 یا، انسانی کی طرح، ٹی میں پہلی کردار، جو کچھ بھی ہے، H ہو سکتا ہے اس معاملے میں. 330 00:20:19,620 --> 00:20:24,990 اور toupper کرتا ہے کہ وہ کیا کہتی ہے. یہ ٹی کی zeroth کردار capitalizes اور اسے تبدیل. 331 00:20:24,990 --> 00:20:28,430 تو اس کا مطلب یہ ہے کہ ٹی کی zeroth کردار، بڑے، 332 00:20:28,430 --> 00:20:30,320 اور یہ کہ ایک ہی جگہ میں واپس ڈال دیا. 333 00:20:30,320 --> 00:20:35,540 تو اگر میں چھوٹے ہیلو ٹائپ، یہ ایچ سرمایہ چھوٹے H تبدیل کرنا چاہئے 334 00:20:35,540 --> 00:20:41,400 لیکن مسئلہ یہ ہے کہ لائنوں میں 35 اور 36 جو میں کرنے کے بارے میں کے ہمیں اور ٹی کے لئے باہر پرنٹ. 335 00:20:41,400 --> 00:20:43,120 اور کیا آپ کی hunch ہے؟ 336 00:20:43,120 --> 00:20:47,250 میں واقعی میں کیا اگر میں تمام چھوٹے ہیلو میں ٹائپ کو دیکھنے کے لئے جا رہا ہوں؟ 337 00:20:47,250 --> 00:20:52,280 طباعت کرنے کے لئے کیا جا رہا ہے؟ >> [اشراوی طالب علم کے جواب] >> یہ کیا ہے؟ 338 00:20:52,280 --> 00:20:58,360 چھوٹے [طالب علم] بگ H اور باقی ہے. >> بڑی H اور باقی چھوٹے جس کے لئے ایس یا ٹی؟ 339 00:20:58,360 --> 00:21:03,170 دونوں [طالب علم. >> دونوں. بالکل. تو چلو دیکھتے ہیں یہاں کیا ہو رہا ہے. 340 00:21:03,170 --> 00:21:08,380 >> آپ کے وزٹرز کا ریکارڈ رکھا آگے بڑھو اور اس کے مرتب کرنے دو یہ copy1 ہے، تو copy1 ہے. ٹھیک ہے. 341 00:21:08,380 --> 00:21:14,840 اندر زوم چلو مجھے آگے بڑھو اور copy1 چلانے، درج کریں، کچھ تو کہو: ہیلو خفی میں. 342 00:21:14,840 --> 00:21:19,570 یہ کاپی کو بڑا، لیکن یہ بظاہر اصل بڑا کر ساتھ ساتھ، 343 00:21:19,570 --> 00:21:22,070 اس لیے کہ اب اس کہانی میں ہوتا ہے؟ 344 00:21:22,070 --> 00:21:27,030 اوپر 27 میں میں سٹرنگ کاپی میں نہیں لگتا، 345 00:21:27,030 --> 00:21:30,450 لیکن پھر بھی آپ intuitively ہے امید ظاہر کی کہ ہو سکتا ہے کہ یہ معاملہ ہونا، 346 00:21:30,450 --> 00:21:33,680 اگر آپ کو اس تصویر کے بارے میں میں کیا سوچتے ہیں، کیا واقعی میں نے کیا کیا ہے؟ 347 00:21:33,680 --> 00:21:35,410 تصویر کے نصف ایک ہی ہے. 348 00:21:35,410 --> 00:21:39,390 تو وقت میں واپس رول تا کہ کہانی میں ابھی تک نہیں ہے موجود ہے. 349 00:21:39,390 --> 00:21:43,160 S کہانی میں موجود ہیں، لیکن چلو، خوش اس وقت چھوٹے کر سکتے ہیں. 350 00:21:43,160 --> 00:21:46,710 تو آپ کے وزٹرز کا ریکارڈ رکھا کو ٹھیک کیا میں نے اصل میں اندر ٹائپ 351 00:21:46,710 --> 00:21:51,280 یہاں اس صورت میں ہم H-L-L O-ہے. 352 00:21:51,280 --> 00:21:58,050 ہم حروف کی ترتیب کے طور پر اپنی طرف متوجہ کریں گے، اپنے SEPARATOR لائنوں یہاں ڈال دیا اور میری 0 \. 353 00:21:58,050 --> 00:22:05,980 تو یہ وہ جگہ ہے جہاں ہم 24 ish کے ذریعے کے طور پر جلد ہی سطر نمبر 1 کے طور پر ہیں، یا اٹھانے کے لئے دیتے ہیں، کو پھانسی دے دی ہے. 354 00:22:05,980 --> 00:22:07,800 یہ میری ياداشت کی تصویر ہے. 355 00:22:07,800 --> 00:22:10,800 کیا جب میں 27 لائن حاصل کرنے کے لئے ہوتا ہے؟ 356 00:22:10,800 --> 00:22:14,730 بس پہلے کی طرح، میں ایک پوائنٹر حاصل ہیں، جو میں نے اس اسکوائر کے طور پر اپنی طرف متوجہ کریں گے. 357 00:22:14,730 --> 00:22:19,740 یہ ٹی کہا جاتا ہے. ڈیفالٹ کی طرف سے اس کی قیمت کیا ہے؟ کون جانتا ہے؟ کچھ ردی کی ٹوکری کی قیمت. 358 00:22:19,740 --> 00:22:22,060 >> تو میں خلاصہ ہے کہ دور ایک سوالیہ نشان کے طور پر کریں گے. 359 00:22:22,060 --> 00:22:27,670 اور جیسے ہی کے طور پر 27 لائن کے دائیں ہاتھ کی طرف executes، کیا میں ٹی کے اندر رہا ہوں ڈال رہے ہو؟ 360 00:22:27,670 --> 00:22:30,770 ایک ہی بات ہے کہ کے میں ہے. 361 00:22:30,770 --> 00:22:34,120 تو اگر ایک لمحے کے لئے ہم نے تیر کے اس تجرید ہٹانے اور ہم کہتے ہیں، 362 00:22:34,120 --> 00:22:40,330 اوہ، یہ میموری لوڈ پتہ 123 ہے، جب آپ کا کہنا ہے کہ ٹی S، نیم وقفہ ہو جاتا ہے، 363 00:22:40,330 --> 00:22:42,700 آپ لفظی 123 ڈال رہے ہیں. 364 00:22:42,700 --> 00:22:45,200 اب اگر ہم نے تصاویر کے ساتھ اس قسم کی دوبارہ ہماری دنیا کو آسان بنانے، 365 00:22:45,200 --> 00:22:48,750 کیا تم سچ میں کیا ہے صرف آپ کی دنیا میں ایک اور تیر ہے شامل 366 00:22:48,750 --> 00:22:52,910 ٹی کی طرف سے ایک ہی عین مطابق سٹرنگ کی طرف اشارہ کرتے ہوئے ہے. 367 00:22:52,910 --> 00:22:59,730 تو، جب 31 اور 32 لائن میں ٹی [0] کو تبدیل کرنے کے بارے میں اصل، 368 00:22:59,730 --> 00:23:05,580 کیا ٹی ہے [0] اب کے ساتھ بظاہر مترادف ہے؟ [0] 369 00:23:05,580 --> 00:23:07,030 تو یہ سب ہو رہا ہے. 370 00:23:07,030 --> 00:23:09,900 اور اگرچہ اس طرح خیال ہے کہ تھوڑا سا کم سطح اور arcane 371 00:23:09,900 --> 00:23:12,760 اور اس طرح شاید intuitively یہ صرف کام کیا جانا چاہئے جیسا لگتا ہے - 372 00:23:12,760 --> 00:23:15,410 میں نے پہلے چیزوں کی کاپیاں کر دیا ہے اور یہ صرف کام کیا - 373 00:23:15,410 --> 00:23:18,590 اگر آپ اصل میں واقعی ایک تار کیا ہے میں سوچتا ہوں، یہ ایک چار * ہے. 374 00:23:18,590 --> 00:23:21,700 ٹھیک ہے، یہ کیا ہے؟ یہ کچھ کردار کا پتہ ہے. 375 00:23:21,700 --> 00:23:24,930 تو شاید یہ زیادہ سمجھ میں آتا ہے کہ تم کچھ کرو جب کوشش کرتے ہیں 376 00:23:24,930 --> 00:23:29,220 تم کر رہے ہو سپر اس طرح بظاہر سادہ، کاپی ایک میموری کا پتہ ہے. 377 00:23:29,220 --> 00:23:32,530 آپ سٹرنگ خود کے ساتھ کچھ بھی اصل میں نہیں کر رہے ہیں. 378 00:23:32,530 --> 00:23:37,500 تو یہاں تک کہ اگر آپ کا کوئی خیال نہیں ہے تو آپ کوڈ میں اس مسئلہ کو کس طرح کو حل کریں گے، 379 00:23:37,500 --> 00:23:45,080 اعلی سطحی، conceptually، جو ہم کرنے کی ضرورت ہے TA کے کے حقیقی کاپی کرنے کے لئے، بظاہر؟ 380 00:23:46,670 --> 00:23:48,820 جی ہاں. >> [طالب علم] یہ ایک نیا مقام دیا ہے؟ بالکل ٹھیک ہے. >> 381 00:23:48,820 --> 00:23:50,800 >> ہم نے ایک بالکل نئی جگہ دینے کی ضرورت ہے. 382 00:23:50,800 --> 00:23:55,230 ہم کسی نہ کسی طرح ایک ایسی دنیا ہے جس میں ہم میموری کا ایک نیا حصہ ملتا ہے پیدا کرنے کی ضرورت ہے، 383 00:23:55,230 --> 00:24:00,090 جو میں نے کی وضاحت کے لئے ایک اس کے نیچے اپنی طرف متوجہ، لیکن یہ وہاں کی ضرورت نہیں ہے کریں گے. 384 00:24:00,090 --> 00:24:04,880 لیکن یہ ایک ہی سائز کرنے کی ضرورت ہے، تو میں ایک ہی جگہ میں ان عمودی لائنوں کو اپنی طرف متوجہ کریں گے. 385 00:24:04,880 --> 00:24:09,720 یہ ٹھیک ہے اگر یہ سب ردی کی ٹوکری میں ابتدائی طور پر ہے. کون جانتا ہے کہ وہاں کیا تھا؟ 386 00:24:09,720 --> 00:24:13,850 لیکن مرحلہ 1 کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے زیادہ میموری کے طور پر دینے کی ہے جیسا کہ مجھے اس کی ضرورت ہے 387 00:24:13,850 --> 00:24:18,630 ہیلو کی ایک کاپی کو فٹ ہونے کے لئے، تو یہ پتہ لگا کہ کس طرح H یہاں کاپی کرنے کے لئے، یہاں ای، 388 00:24:18,630 --> 00:24:20,390 یہاں اور وغیرہ میں. 389 00:24:20,390 --> 00:24:24,880 لیکن یہ پہلے ہی تھوڑا واضح محسوس بھی اگر تفصیلات میں سے کچھ اب بھی ہیں خلاصہ چاہئے. 390 00:24:24,880 --> 00:24:28,690 اس میں اس جملے کو کاپی کرنے کے لئے، یہ صرف ایک اس لوپ یا دیر لوپ کے لئے ہے 391 00:24:28,690 --> 00:24:31,580 یا کچھ اور جس کے ساتھ آپ سب سے زیادہ واقف ہو گئی ہو. 392 00:24:31,580 --> 00:24:35,970 تو اس کی کوشش ہے. کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے copy2.c میں جانے دو. 393 00:24:35,970 --> 00:24:43,270 copy2.c میں ہم 27 لائن کے علاوہ تقریبا ایک ہی پروگرام ہے. 394 00:24:43,270 --> 00:24:47,260 یہ ایک چھوٹا سا پیچیدہ لگتا ہے، لیکن اگر ہم اس کو نیچے ٹکڑوں میں پیش کی توڑ 395 00:24:47,260 --> 00:24:48,950 بائیں جانب ایک ہی ہے. 396 00:24:48,950 --> 00:24:52,790 چار * یاد میں اس بات کو تخلیق کرتا ہے، ایک سوال کے نشان کے ساتھ ہی سہی 397 00:24:52,790 --> 00:24:54,680 کیونکہ ہم نے کوئی اندازہ نہیں ہے کیا ڈیفالٹ کی طرف سے ہے. 398 00:24:54,680 --> 00:24:57,920 دائیں ہاتھ کی طرف پر اب ہم ایک نئے تقریب malloc، شروع کر رہے ہیں، 399 00:24:57,920 --> 00:25:00,640 میموری کے لئے مختص ہیں، آپ کے وزٹرز کا ریکارڈ رکھا میموری دے، 400 00:25:00,640 --> 00:25:06,900 اور یہ بظاہر کتنے دلائل، کتنے قوسین کے اندر اندر چیزوں؟ لیتا ہے 401 00:25:09,660 --> 00:25:12,130 میں 1 اور 2 کے murmurings سنی ہے، لیکن یہ صرف 1 ہے. 402 00:25:12,130 --> 00:25:15,320 کوئی کوما، جس کا مطلب ہے کہ قوسین کے اندر صرف 1 بات ہے ہے. 403 00:25:15,320 --> 00:25:17,720 اگرچہ دیگر قوسین ہے، آپ کے وزٹرز کا ریکارڈ رکھا اجاگر 404 00:25:17,720 --> 00:25:21,460 outermost قوسین کے اندر کیا ہے، اور اس اظہار ہے: 405 00:25:21,460 --> 00:25:25,880 (strlen (زبانیں) 1 +) * sizeof (چار). 406 00:25:25,880 --> 00:25:29,190 لہذا اگر ہم واقعی میں لگتا ہے کہ اس کے ذریعے یہ کہہ رہا ہے کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے کے کی لمبائی ہے. 407 00:25:29,190 --> 00:25:34,440 میں کیوں ہوں، اگرچہ، کی حد پر 1 انہوں نے مزید کہا؟ >> [اشراوی طالب علم کے جواب] 408 00:25:34,440 --> 00:25:40,200 بالکل. ہم دم میں اس آدمی کے لئے جگہ، چھٹی کردار ہے کہ کوئی انگریزی کا مطلب ہے کی ضرورت ہے 409 00:25:40,200 --> 00:25:42,250 لیکن خصوصی پروگرام معنی ہے. 410 00:25:42,250 --> 00:25:46,800 >> تو ہم اس کے لئے 1 + کی ضرورت ہے کیونکہ، strlen ریٹرن کی لمبائی کی انسانی امید 411 00:25:46,800 --> 00:25:50,890 ہیلو یا 5، یہ آپ کو نہیں دے اضافی شہوت انگیز null کردار. 412 00:25:50,890 --> 00:25:52,980 تو میں 1 + کے ساتھ دستی طور پر یہ شامل کریں. 413 00:25:52,980 --> 00:25:56,060 اور پھر یہ * کے سائز (حروف)، ہم سے پہلے اس کو نہیں دیکھا ہے. 414 00:25:56,060 --> 00:25:57,480 یہ تکنیکی طور پر ایک تقریب نہیں ہے. 415 00:25:57,480 --> 00:26:04,150 یہ ایک خصوصی مطلوبہ الفاظ کی ہے کہ صرف آپ کو بتاتا ہے جو سائز ایک کمپیوٹر پر کچھ ڈیٹا کی قسم کی ہے 416 00:26:04,150 --> 00:26:06,980 حقیقت میں، کیونکہ ہم میں سے کچھ 32 بٹ کمپیوٹر ہے. 417 00:26:06,980 --> 00:26:10,900 میں نے گھر میں ایک بہت پرانے کمپیوٹر ہے، اور یہ صرف 32 بٹیں کا استعمال کیا جاتا ہے اشارہ کی نمائندگی کرنے. 418 00:26:10,900 --> 00:26:13,900 اور اگر ایسا ہے تو میں ایک ڈیٹا کی قسم کا سائز کیا، 32 بٹس ہو سکتا ہے. 419 00:26:13,900 --> 00:26:18,300 لیکن اگر میں اپنے نئے پسند ہیں کمپیوٹر کا استعمال کرتے ہوئے کر رہا ہوں، میں 64 بٹس کی قدر کو واپس حاصل کر سکتے ہیں 420 00:26:18,300 --> 00:26:20,510 ایک ایڈریس کی طرح کسی چیز کے لئے. 421 00:26:20,510 --> 00:26:25,400 تو اس معاملے میں، صرف سپر محفوظ کرنے کے لئے، ہم جیسے ہارڈ کے کوڈ کا کچھ نہیں جا رہے ہیں - 422 00:26:25,400 --> 00:26:28,740 ٹھیک ہے، کیا جو ہم نے اب تک کہا ہے کے مطابق چار کا سائز کیا ہے؟ 423 00:26:28,740 --> 00:26:34,450 ہم بہت زبانی طور پر کہا ہے کہ اسے 1 بائٹ ہے، اور یہ کہ بورڈ بھر میں بہت درست ہے. 424 00:26:34,450 --> 00:26:37,000 لیکن پھر مفروضات خراب ہو جاتے ہیں. 425 00:26:37,000 --> 00:26:40,850 وہ چھوٹی گاڑی سافٹ ویئر کی قیادت اگر لوگ طریقوں سے آپ کا ارادہ نہیں کیا میں آپ کے سافٹ ویئر کا استعمال کریں. 426 00:26:40,850 --> 00:26:44,750 لشکر طیبہ کا خلاصہ دور اور generically تو کہنا 427 00:26:44,750 --> 00:26:46,830 میں میموری کی یہ بہت مقدار کی ضرورت ہے 428 00:26:46,830 --> 00:26:50,210 اور میموری میں سے ہر ایک حصہ ایک کردار کے سائز کے برابر ہونا چاہئے، 429 00:26:50,210 --> 00:26:54,870 جو اس صورت میں 1 کے برابر حقیقت میں ہے، لیکن یہ اسے لکھنے کی ایک سے زیادہ عام طریقہ ہے. 430 00:26:54,870 --> 00:27:00,460 تو اگر لفظ ہیلو ہے، کتنے بائٹس malloc ہیلو کے لئے بظاہر مختص ہے؟ 431 00:27:00,460 --> 00:27:04,980 چھ [طالب علم. چھ. >> بالکل کے طور پر کئی کے طور پر ہم سکرین پر سوال نمبر ہے. 432 00:27:04,980 --> 00:27:07,800 اور پھر اب GetString آپ کی سمجھ کی بنیاد پر لگتا ہے کہ 433 00:27:07,800 --> 00:27:12,790 کیا malloc شاید واپس کرتا ہے؟ >> [طالب علم] پتہ ہے. 434 00:27:12,790 --> 00:27:17,020 کیا پتہ ہے؟ میموری کا پہلا حصہ. 435 00:27:17,020 --> 00:27:20,670 >> ہم وہاں کوئی اندازہ نہیں کیا ہے کیونکہ کسی اور تقریب 436 00:27:20,670 --> 00:27:23,010 اس میموری سکتا ہے پہلے کا استعمال کرتے ہوئے ہے. 437 00:27:23,010 --> 00:27:28,380 لیکن malloc، GetString کی طرح، میموری کے پہلے بائٹ کے ایڈریس واپس 438 00:27:28,380 --> 00:27:30,540 کہ یہ آپ کے لئے ایک طرف رکھ دیا ہے. 439 00:27:30,540 --> 00:27:38,380 تاہم ایک الٹا سلیش شہوت انگیز null کردار کے ساتھ، کیا یہ نہیں کرتا ہے اس کو خالی میں بھرنے ہے 440 00:27:38,380 --> 00:27:43,030 کیونکہ یہ بدل جاتا ہے تم باہر malloc کا استعمال کرتے ہوئے کچھ بھی مختص کر سکتے ہیں: ints، ڈور، arrays، 441 00:27:43,030 --> 00:27:45,700 floats، طالب علم ڈھانچے. 442 00:27:45,700 --> 00:27:47,750 آپ مکمل طور پر malloc generically استعمال کر سکتے ہیں. 443 00:27:47,750 --> 00:27:51,470 اس کی پرواہ نہیں ہے یا پتہ ہے جو آپ کے لئے میموری آونٹن کر رہے ہیں ہے. 444 00:27:51,470 --> 00:27:55,810 تو اس malloc کے لئے presumptuous ایک 0 \ ڈال 445 00:27:55,810 --> 00:27:58,340 میموری کا ہر حصہ کے آخر میں یہ آپ کو دے رہی ہے 446 00:27:58,340 --> 00:28:02,620 کیونکہ یہ \ 0 چیز صرف ڈور کے لئے ایک کنونشن ہے. 447 00:28:02,620 --> 00:28:06,310 یہ ints کے لئے استعمال نہیں ہے، یہ floats کے لئے استعمال نہیں ہے، اس کے طالب علموں کے لئے استعمال نہیں ہے. 448 00:28:06,310 --> 00:28:11,730 اور اس ہی malloc کے ساتھ پکڑ لیا ہے کہ یہ بوجھ تم پر مکمل طور پر پروگرامر ہے 449 00:28:11,730 --> 00:28:16,790 یاد ہے تم کتنے بائٹس مختص اور لوپ کے لئے کبھی نہیں کرنے کے لئے استعمال 450 00:28:16,790 --> 00:28:21,570 یا دیر لوپ اور میموری کا حصہ تمہیں دیا گیا سرحد کے ماضی میں جانا ہے. 451 00:28:21,570 --> 00:28:23,540 ایک اور طریقہ ڈالو، جیسے ہی تم میموری مختص 452 00:28:23,540 --> 00:28:28,510 آپ کو آپریٹنگ سسٹم سے نہیں کر سکتے، اوہ، ویسے، یہ کس طرح میموری کا ایک حصہ کے بڑے تھا؟ 453 00:28:28,510 --> 00:28:32,080 یہ آپ پر منحصر ہے کہ اگر آپ کو اس قدر کی ضرورت ہے یاد ہے. 454 00:28:32,080 --> 00:28:34,330 >> تو دیکھتے ہیں کہ میں کس طرح اس میموری کو استعمال کرنے کے لئے آگے بڑھنے. 455 00:28:34,330 --> 00:28:38,430 لائن 28 اور 29 میں کیوں میں یہ کر رہا ہوں؟ 456 00:28:39,850 --> 00:28:42,260 بس کل وویک چیک. 457 00:28:42,260 --> 00:28:45,110 بس اگر کچھ غلط ہو گیا، میں میموری میں سے کچھ پاگل رقم کے لئے سے دعا گو ہیں 458 00:28:45,110 --> 00:28:48,690 یا میں اتنی ساری چیزیں کمپیوٹر پر چل رہا ہے کہ وہاں صرف کافی میموری نہیں ہے، 459 00:28:48,690 --> 00:28:51,780 اس طرح کچھ، میں کم از کم اتارنا null کے لئے چیک کرنے کے لیے کرنا چاہتے ہیں. 460 00:28:51,780 --> 00:28:55,260 حقیقت میں، سب سے زیادہ کمپیوٹر آپ برم دے گا کہ ہر پروگرام 461 00:28:55,260 --> 00:28:57,080 آپ کے RAM کے مکمل استعمال کر سکتے ہیں، 462 00:28:57,080 --> 00:29:00,740 لیکن اس کے باوجود، اگر کوئی پاگل طویل ہو سکتا ہے سٹرنگ میں صارف اقسام کیونکہ وہ ایک برا آدمی ہے 463 00:29:00,740 --> 00:29:03,440 اور وہ اصل میں اس میں اپنے پروگرام یا ہیک کریش کرنے کی کوشش کر رہے ہیں، 464 00:29:03,440 --> 00:29:07,300 آپ کو کم از کم malloc کی واپسی کی قیمت چیک کرنے کے لیے چاہتے ہیں اور چاہے وہ شہوت انگیز null برابر. 465 00:29:07,300 --> 00:29:11,630 اور اگر اس سے فرق پڑتا ہے، بس ابھی کیونکہ میں نہیں جانتا کہ کیا اس صورت میں کیا کرنا چھوڑ. 466 00:29:11,630 --> 00:29:13,950 میں سٹرنگ کیسے کاپی کروں؟ کچھ ایسا کرنے کے طریقوں ہے. 467 00:29:13,950 --> 00:29:18,850 ہیں STR سی کام کی کاپی ہے، لیکن یہ انتہائی آسان ہے کے لئے ہمیں اس طرح پرانے زمانے کرنا ہے. 468 00:29:18,850 --> 00:29:23,110 >> پہلے مجھے اعداد و شمار کے کی لمبائی ہے. 469 00:29:23,110 --> 00:29:26,930 میں نے اس لوپ میں ڈال کر سکتے ہیں لیکن بجائے میں صرف وضاحت کے لئے یہاں ڈال. 470 00:29:26,930 --> 00:29:30,610 تو (ن) اب اصل سٹرنگ کی لمبائی ہے، جو بظاہر 5 ہے ذخیرہ. 471 00:29:30,610 --> 00:29:35,290 اس کے بعد میں میرے لیے لوپ میں 0 سے iterating رہا ہوں ن، 472 00:29:35,290 --> 00:29:40,940 اور میں ہر iteration پر ڈال رہا ہوں [] ٹی کے اندر [میں]. 473 00:29:40,940 --> 00:29:45,060 تو یہی ہے جو میں میری 2 سے پہلے ڈور میں کی طرف اشارہ کرتے ہوئے انگلیوں کے ساتھ تقاضا ہے. 474 00:29:45,060 --> 00:29:49,260 لوپ کے لئے یہ اس طرح iterates، میں یہاں میں ایچ کاپی رکھا جائے جا رہا ہوں، 475 00:29:49,260 --> 00:29:52,890 یہاں میں یہاں، L میں ای ہے کیونکہ اس کی ہے، اس ٹی ہے. 476 00:29:52,890 --> 00:29:58,770 اور پھر آخر میں، 35 سطر میں کیوں میں نے یہ کر رہا ہوں؟ 477 00:29:58,770 --> 00:30:03,770 میں اس بات کا یقین کر لیں کہ میں سٹرنگ ٹی کو ختم کر رہا ہوں بنانے کے لئے کی ضرورت ہے. 478 00:30:03,770 --> 00:30:06,170 اور میں نے اسے اس طرح کیا سپر واضح ہے. 479 00:30:06,170 --> 00:30:09,510 لیکن، کسی تجویز، اگر آپ کر سکتے، یہ سب کرنے کے مختلف طریقے. 480 00:30:09,510 --> 00:30:13,930 میں 35 لائن واقعی ضرورت نہیں ہے. ایسا کرنے کا ایک طریقہ ہے. 481 00:30:13,930 --> 00:30:18,880 جی ہاں. >> [اشراوی طالب علم کے جواب] >> کا کہنا ہے کہ یہ زور. 482 00:30:18,880 --> 00:30:20,960 [طالب علم] سے کم یا برابر ہے. بالکل ٹھیک ہے. >> 483 00:30:20,960 --> 00:30:24,450 ہمیں اس کے لئے کم سے کم یا صرف (ن)، جو عام طور پر بری کر دیا گیا ہے کے برابر کہہ سکتے 484 00:30:24,450 --> 00:30:28,190 تقریبا ہمیشہ جب ہم بات ہم گنتی کر رہے ہیں ایک برابر ہے کیونکہ 485 00:30:28,190 --> 00:30:30,000 ہم مرحلہ نمبر 1 کو بہت دور سے جاتے ہیں. 486 00:30:30,000 --> 00:30:32,170 لیکن یاد رکھنا، ہم کتنے بائٹس مختص کیا؟ 487 00:30:32,170 --> 00:30:37,210 ہم نے کے کی strlen مختص، 6 کل کے لئے 5 1 +. 488 00:30:37,210 --> 00:30:39,980 تو ہم اس معاملے میں کچھ اس طرح کر سکتے ہیں 489 00:30:39,980 --> 00:30:46,450 تاکہ ہم ہی آخر میں ہی نہیں بلکہ خوش 0 \ کاپی کر رہے ہیں. 490 00:30:46,450 --> 00:30:49,860 دوسری صورت میں، ہم نامی STR نقل تقریب کا استعمال، strcpy کر سکتا ہے، 491 00:30:49,860 --> 00:30:51,700 لیکن اس سے تقریبا زیادہ سے زیادہ مزہ نہیں ہوگا. 492 00:30:51,700 --> 00:30:54,000 لیکن اس کے یہ ہڈ کے نیچے ہے. 493 00:30:54,000 --> 00:30:56,050 پھر آخر میں، ہم نے پہلے کے طور پر ایک ہی بات کرتے ہیں. 494 00:30:56,050 --> 00:31:01,620 میں ٹی اور پھر فائدہ میں یہ دعوی کرتے ہیں کہ اصل اور اس نقل اس طرح لگ رہا ہے کی طرح لگتا ہے. 495 00:31:01,620 --> 00:31:08,570 تو اب یہ کرنے کی کوشش کریں. کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے یہاں دو copy2 بنائیں. ہم میں زوم اور copy2 چلانے ہوں گے. 496 00:31:08,570 --> 00:31:13,840 میں چھوٹے ہیلو میں ٹائپ جا رہا ہوں، بلکہ میں اصل کے طور پر چھوٹے ہیلو 497 00:31:13,840 --> 00:31:16,930 لیکن نقل کے لئے خوش دارالحکومت. 498 00:31:16,930 --> 00:31:20,300 لیکن میں ابھی تک نہیں کیا ہے. میں 1 آخری چیز یہاں کرنے کی ضرورت ہے. 499 00:31:20,300 --> 00:31:28,000 46 اور 47 واضح طور پر میموری آزاد ہے، لیکن کہ اصل میں کیا مطلب ہے؟ 500 00:31:28,000 --> 00:31:33,250 میں کیا کر رہا ہوں، کیا آپ کو لگتا ہے کہ ہے، کی طرف سے 46 لائن اور 47 اوپر بلا ہے؟ 501 00:31:33,250 --> 00:31:38,900 اس کا کیا اثر ہے؟ جی ہاں. 502 00:31:38,900 --> 00:31:43,140 [اشراوی طالب علم کے جواب] بالکل. >> 503 00:31:43,140 --> 00:31:46,380 >> تم نے صرف آپریٹنگ سسٹم کہہ رہے ہیں، ارے، اس میموری کے لئے شکریہ. 504 00:31:46,380 --> 00:31:48,320 آپ اب یہ کسی اور کے لئے استعمال کر سکتے ہیں. 505 00:31:48,320 --> 00:31:50,790 اور ردی کی ٹوکری کے اقدار کی ایک بہترین مثال ہے. 506 00:31:50,790 --> 00:31:55,430 میں صرف اس میموری کو استعمال کیا ہے. لفظ 2 مقامات میں خوش لکھنے، 507 00:31:55,430 --> 00:31:57,490 یہاں، یہاں، یہاں، یہاں اور 508 00:31:57,490 --> 00:32:00,910 تو یہ 0 ایچ ای-L-L O-\-ہے. 509 00:32:00,910 --> 00:32:06,960 لیکن اس وقت میں 46 لائن اور 47 لائن فون، اور تمہیں پتہ ہے کہ تصویر کے لحاظ سے ہوتا ہے؟ 510 00:32:06,960 --> 00:32:10,010 اصل میں، انتظار کریں، اس تصویر کی عمر میں سے ایک ہے. 511 00:32:10,010 --> 00:32:12,550 ایک بار ہم کاپی بنا، اس آدمی کو اصل میں یہاں اشارہ کر رہا ہے، 512 00:32:12,550 --> 00:32:16,110 تو نمبر اور ہمارے تیر کے طور پر ہٹانے کے صرف دور خلاصہ پھر. 513 00:32:16,110 --> 00:32:19,370 اس تصویر میں کیا ہوتا ہے جب میں فون مفت ہے؟ 514 00:32:19,370 --> 00:32:22,750 [اشراوی طالب علم کے جواب] بھی نہیں >>. 515 00:32:22,750 --> 00:32:29,510 اگر میں فون پر مفت اور ٹی - ایک چال کے سوال کی قسم - بالکل اس تصویر کو تبدیل نہیں کرتا 516 00:32:29,510 --> 00:32:33,880 کے بلا اور بلا وجہ سے ٹی آپریٹنگ سسٹم بتاتی ہے، 517 00:32:33,880 --> 00:32:39,010 ہے، تم اس میموری کو دوبارہ استعمال کرتے ہیں، لیکن اس شہوت انگیز null تبدیل نہیں ہوتا کر سکتے ہیں 518 00:32:39,010 --> 00:32:41,840 یا کوئی خاص کردار، اس کو تبدیل نہیں ہے، 519 00:32:41,840 --> 00:32:47,350 یہ ک یا ای یا کچھ اور کسی بھی جگہ L یا ایل یا اے تبدیل نہیں ہوتا. 520 00:32:47,350 --> 00:32:51,610 تصویر کے لحاظ سے، جیسے ہی آپ کو مفت، کچھ بھی نہیں تبدیلیاں فون. 521 00:32:51,610 --> 00:32:56,570 اور اس میں ردی کی ٹوکری میں اقدار کی اصل جھوٹ کیونکہ اگر میں تو بعد میں اس پروگرام میں 522 00:32:56,570 --> 00:33:01,010 کہ GetString یا malloc یا کی طرح کچھ کے ساتھ زیادہ سے زیادہ میموری کے لئے آپریٹنگ سسٹم سے پوچھو 523 00:33:01,010 --> 00:33:04,900 اور آپریٹنگ سسٹم کا کہنا ہے کہ، اس بات کا یقین، میں 12 بائٹس میموری کا صرف آزاد کر، 524 00:33:04,900 --> 00:33:08,080 ان استعمال کرتے ہیں، کیا آپ کے حوالے کیا جائے جا رہے ہیں؟ 525 00:33:08,080 --> 00:33:10,830 آپ میموری کا ایک حصہ ہے کہ ہم عام طور پر اپنی طرف متوجہ کرے گا کے حوالے کی جائے جا رہے ہیں 526 00:33:10,830 --> 00:33:13,700 سوال نمبروں کے ساتھ، لیکن کیا وہ سوال نمبر ہیں؟ 527 00:33:13,700 --> 00:33:17,000 انہوں نے H-L-L-O، H-L-L O-ہوا. 528 00:33:17,000 --> 00:33:20,940 یہ ہمارے نئے ردی کی ٹوکری اقدار جیسے ہی کے طور پر آپ کو اس میموری کو آزاد ہیں. 529 00:33:20,940 --> 00:33:22,750 >> ایک حقیقی دنیا مطلب یہاں بھی ہے. 530 00:33:22,750 --> 00:33:24,720 یہ RAM کے ساتھ کیا ہوتا ہے، لیکن آپ کے کمپیوٹر 531 00:33:24,720 --> 00:33:26,720 اصل ڈسک سے ایک ہی بات کرتے ہیں. 532 00:33:26,720 --> 00:33:30,620 ہم نے اس کے بارے میں خاص طور پر مستقبل میں مسئلہ سیٹ ہے کہ عدالتی پر مرکوز کے ساتھ بات کریں گے. 533 00:33:30,620 --> 00:33:36,170 لیکن جو اصل میں ہوتا ہے اگر آپ کو اپنے ڈیسک ٹاپ پر کچھ حساس مالیاتی فائل ہے 534 00:33:36,170 --> 00:33:39,600 یا کچھ خاکہ JPEG اور آپ یہ آپ کے ردی کی ٹوکری میں کھینچ کر لائیں، 535 00:33:39,600 --> 00:33:44,390 جب آپ نے اسے ردی کی ٹوکری یا ریسایکل بن میں کھینچ کر لائیں کیا ہوتا ہے؟ 536 00:33:44,390 --> 00:33:47,240 تمہیں معلوم ہوتا کہ میں کے بارے میں بات کر رہی تھی. [ہنسی] 537 00:33:47,240 --> 00:33:52,370 جب آپ اپنے ریسایکل بن یا ردی کی ٹوکری میں کر سکتے ہیں میں اس کے ثبوت گھسیٹ لیا ہے تو کیا ہوتا ہے؟ 538 00:33:52,370 --> 00:33:55,920 [اشراوی طالب علم کے جواب] 539 00:33:55,920 --> 00:33:58,000 اچھا، تو ہوشیار. جب آپ ایسا کرتے ہیں تو کیا ہوتا ہے؟ 540 00:33:58,000 --> 00:34:01,030 مختصر جواب کچھ بھی نہیں ہے، ٹھیک ہے؟ 541 00:34:01,030 --> 00:34:04,790 خاکہ یا حساس فائل اب بھی بس وہاں ہے آپ کی ہارڈ ڈرائیو میں بیٹھے کہیں. 542 00:34:04,790 --> 00:34:07,940 ہم میں سے زیادہ تر کم از کم مشکل راستہ ہے کہ آپ کو آپ کی ردی کی ٹوکری خالی کرنے کی ضرورت سیکھا ہے 543 00:34:07,940 --> 00:34:10,429 یا اپنے ریسایکل بن میں اصل فائلوں کو خارج کرنے کی. 544 00:34:10,429 --> 00:34:13,440 اور یقینا، تم صحیح جب یا آپ کے ردی کی ٹوکری پر کلک کنٹرول کلک کر سکتے ہیں 545 00:34:13,440 --> 00:34:15,580 یا فائل، خالی ردی کی ٹوکری یا جو کچھ بھی منتخب 546 00:34:15,580 --> 00:34:21,420 اور آپ اصل میں خالی ردی کی ٹوکری میں کر سکتے ہیں یا ریسایکل بن میں، جو اصل میں اس تصویر ہوا تو؟ 547 00:34:22,810 --> 00:34:25,969 اور کچھ بھی نہیں ہے. تو کچھ نہیں اصل میں ڈسک پر ہوتا ہے. 548 00:34:25,969 --> 00:34:30,880 >> اور اگر ہم صرف عارضی طور پر لکھنے digress - I'll صرف اس کے پیچھے کا استعمال کریں. 549 00:34:30,880 --> 00:34:34,639 تو اب کہانی RAM، جس ہے جہاں پروگراموں کا کوئی وجود ہے سے تبدیل کر رہا ہے 550 00:34:34,639 --> 00:34:39,250 جب تم انہیں ڈسک پر چلا رہے ہیں، جو وہ جگہ ہے جہاں وہ طویل مدتی محفوظ کیا جاتا ہے 551 00:34:39,250 --> 00:34:42,920 اس وقت بھی جب اقتدار، اب کے لئے جاتا ہے - اور ہم مستقبل میں اس پر واپس آ جائیں گے - 552 00:34:42,920 --> 00:34:46,380 چلو صرف دکھاوا ہے کہ یہ آپ کے کمپیوٹر کی ہارڈ ڈرائیو کے اندر کی نمائندگی کرتا ہے 553 00:34:46,380 --> 00:34:50,110 کیونکہ وہ واپس دن میں سرکلر ڈسک فلاپی ڈسک کی طرح استعمال کیا. 554 00:34:50,110 --> 00:34:55,130 تو اگر آپ کو کچھ حساس ایکسل فائل ہے، اس میموری کے اس حصہ لے سکتے ہیں 555 00:34:55,130 --> 00:34:59,770 آپ کے کمپیوٹر کی ڈسک پر، اور میں نے صرف ایک ہی صوابدیدی 1s اور 0s ڈرائنگ رہا ہوں. 556 00:34:59,770 --> 00:35:03,970 ، جب آپ کو آپ کے ردی کی ٹوکری میں اس طرح فائل کھینچ کر لائیں بن کو ری سائیکل کر سکتے ہیں یا 557 00:35:03,970 --> 00:35:07,750 literally کچھ بھی نہیں ہوتا ہے کیونکہ ایپل اور مائیکروسافٹ کا فیصلہ کیا ہے 558 00:35:07,750 --> 00:35:10,450 ردی کی ٹوکری میں کر سکتے ہیں اور ریسایکل بن میں واقعی میں صرف ایک عارضی پلیس ہولڈر ہے. 559 00:35:10,450 --> 00:35:14,710 شاید بالاخر OS یہ آپ کے لئے خالی ہے، لیکن عام طور پر، یہ کچھ بھی نہیں ہے، 560 00:35:14,710 --> 00:35:17,090 کم سے کم جب تک کہ تم جگہ پر بہت کم ہیں. 561 00:35:17,090 --> 00:35:20,870 >> تاہم، جب آپ خالی ردی کی ٹوکری یا ردی ٹوکری خالی 562 00:35:20,870 --> 00:35:23,460 اسی طرح، کچھ بھی نہیں اس تصویر کا کیا ہوتا ہے. 563 00:35:23,460 --> 00:35:28,590 یہ سب ہوتا ہے دوسری جگہوں پر آپ کے کمپیوٹر پر ہے، اس ٹیبل کے کسی قسم ہے. 564 00:35:28,590 --> 00:35:35,400 یہ ایک چھوٹا سا دھوکے باز شیٹ ہے جو یہ کہتا ہے کہ یہ ہے کہ، کا کہنا ہے کہ، resume.doc طرح ہے، 565 00:35:35,400 --> 00:35:40,920 تو، اپنی ہارڈ ڈسک پر 123 مقام پر رہتے تھے مائیکروسافٹ ورڈ فائل میں اپنے ریزیومے 566 00:35:40,920 --> 00:35:43,710 میں میموری نہیں ہے اور لیکن نہیں RAM میں اپنی ہارڈ ڈسک پر 567 00:35:43,710 --> 00:35:49,050 اور خاکہ 456 میں JPEG زندگی، اور آپ کے ایکسل فائل کو 789 یا جہاں بھی رہتے ہیں. 568 00:35:49,050 --> 00:35:53,640 جب آپ اصل میں ردی کی ٹوکری یا ریسایکل بن میں خالی کرنے سے فائلوں کو خارج کر دیں، 569 00:35:53,640 --> 00:35:59,530 اس تصویر تبدیل نہیں ہوتا. 0s اور آپ کی ہارڈ ڈرائیو پر 1s کہیں بھی نہ جاؤ. 570 00:35:59,530 --> 00:36:03,930 لیکن یہ میز، اس طرح کی چھوٹی سی ڈیٹا بیس، تبدیلی کرتا ہے. 571 00:36:03,930 --> 00:36:08,750 جب آپ کو اپنے ریزیومے کو حذف کرتے ہیں، جیسے فائل کچھ معنوں میں خارج کر دیا ہے، 572 00:36:08,750 --> 00:36:12,790 لیکن تمام کمپیوٹر ہے بھول جہاں اس چیز کو آپ کی ہارڈ ڈرائیو پر رہتا ہے. 573 00:36:12,790 --> 00:36:17,870 0s اور 1s جو اپنے ریزیومے یا ان دیگر فائلوں کی کسی تحریر اب بھی برقرار ہیں. 574 00:36:17,870 --> 00:36:21,960 >> تو اگر آپ نے اس غلطی سے کیا ہے، وہاں اب بھی ایک غیر صفر امکان 575 00:36:21,960 --> 00:36:25,800 ہے کہ آپ کو آپ کے ڈیٹا کی وصولی نورٹن کی افادیت یا کسی تجارتی سافٹ ویئر کا استعمال کرتے ہوئے کر سکتے ہیں 576 00:36:25,800 --> 00:36:29,810 زندگی میں جس کا مقصد تلاش 0s اور 1s کی طرح کیا گیا ہے یتیم ہے، 577 00:36:29,810 --> 00:36:33,300 یہاں بھول لیکن یہاں چھوڑ دیا، تا کہ آپ کو آپ کے ڈیٹا واپس لا سکتا ہے. 578 00:36:33,300 --> 00:36:38,410 یا پولیس یا ایف بی آئی کے ساتھ عدالتی تفتیش کاروں کی ایک ہارڈ ڈرائیو اصل میں لیں گے 579 00:36:38,410 --> 00:36:42,550 اور اصل میں 0s اور 1s کہ ایکسل فائلوں کی طرح JPEGs طرح دیکھو دیکھو، پیٹرن کے لئے دیکھو، 580 00:36:42,550 --> 00:36:46,400 اور انہیں اس طرح یہاں تک کہ اگر کمپیوٹر ان بھول گئے وہاں ٹھیک ہے. 581 00:36:46,400 --> 00:36:49,820 تو، صرف واقعی راستہ ہے جس سے ڈیٹا کو خارج کرنا، جیسا کہ ہم مستقبل میں بات چیت کریں گے 582 00:36:49,820 --> 00:36:54,190 یا مسح فائل یا ہارڈ ڈسک صاف ہے - 583 00:36:54,190 --> 00:36:56,540 آپ واقعی 0s اور 1s سے نجات نہیں حاصل کر سکتے ہیں 584 00:36:56,540 --> 00:36:59,440 کیونکہ دوسری صورت میں آپ کو ایک گیگا بائٹ کی ہارڈ ڈرائیو کے ساتھ شروع ہوتا 585 00:36:59,440 --> 00:37:02,380 اور آپ ایک میگا بائٹ کی ہارڈ ڈرائیو کے ساتھ اگر آپ مسلسل حذف کرنے کر رہے تھے چاہتے ہیں، 586 00:37:02,380 --> 00:37:04,380 لفظی 0s، اور 1s. 587 00:37:04,380 --> 00:37:06,310 تو جو تم کرتے ہو اگر آپ واقعی میں آپ کی پٹریوں کا احاطہ کرنے چاہتا تھا 588 00:37:06,310 --> 00:37:10,510 اور بنیادی مسئلہ یہ ہے کہ وہاں اب بھی ہے 0s اور ڈسک پر 1s؟ 589 00:37:10,510 --> 00:37:14,930 میں gesticulating ہے کہ آپ کے آلے جسمانی طور پر توڑ کسی دیکھتے ہیں. یہ کام کرے گا. 590 00:37:14,930 --> 00:37:19,600 [ہنسی] لیکن اگر کہ ایک مہنگا حل کی طرح ہے، زیادہ مناسب کیا ہو گا؟ 591 00:37:19,600 --> 00:37:23,270 جی ہاں. >> [طالب علم] ان سے ادلیکھت. >> انہیں کس کے ساتھ ادلیکھت ہو؟ >> [طالب علم] دیگر ڈیٹا. 592 00:37:23,270 --> 00:37:29,070 دیگر ڈیٹا. آپ 0s یا 1s یا تمام 0s، تمام 1s کے ساتھ آپ کی ڈسک صرف ادلیکھت کر سکتے ہیں. 593 00:37:29,070 --> 00:37:31,230 >> اور یہ یقینا ہے جو سافٹ ویئر کی کچھ کرتا ہے. 594 00:37:31,230 --> 00:37:33,570 آپ کے سافٹ ویئر خریدنے یا اس سے بھی آزاد سافٹ ویئر حاصل کر سکتے ہیں، 595 00:37:33,570 --> 00:37:36,610 اور یہاں تک کہ میک OS میں ان دنوں کی تعمیر، کم تو ونڈوز میں، 596 00:37:36,610 --> 00:37:38,660 محفوظ طریقے سے ختم کرنے کی صلاحیت ہے. 597 00:37:38,660 --> 00:37:41,960 اصل میں، اگر آپ آج تمام رن گھر کرنا چاہتے ہیں اگر آپ ایک میک ہے اور ایسا کرتے ہیں، 598 00:37:41,960 --> 00:37:45,740 اگر آپ کو مل گیا ہے آپ کے کوڑے دان میں کچھ چیزیں کر سکتے ہیں، کر سکتے ہیں اور محفوظ خالی ردی کی ٹوکری میں کرتے ہیں، 599 00:37:45,740 --> 00:37:47,610 جو بالکل وہی ہے. 600 00:37:47,610 --> 00:37:53,350 بلکہ یہاں صرف مٹائیں فائلوں سے، اسے یہاں 0s اور 1s مٹا نہیں ہے، 601 00:37:53,350 --> 00:38:01,240 بلکہ یہ صرف ان سب کو تبدیل، مثال کے طور پر 0s اور ڈاٹ، ڈاٹ، ڈاٹ،. 602 00:38:01,240 --> 00:38:05,330 تو آپ کے مستقبل psets کی ایک جان بوجھ کر ڈیٹا کی بحالی اصل میں ہو جائے گا - 603 00:38:05,330 --> 00:38:08,430 تصاویر کہ ہم لوگ، کیمپس، جگہوں اور چیزوں کے لے لیا ہے 604 00:38:08,430 --> 00:38:12,810 جس کے لئے ہم نے ایک ڈیجیٹل کیمرے کا میموری کارڈ کے عدالتی تصویر بنا دیں گے، 605 00:38:12,810 --> 00:38:17,120 جو بالکل وہی خیال ہے - اور آپ کو اصل میں تلاش کرنے کا چیلنج دیا پڑے گا 606 00:38:17,120 --> 00:38:20,160 پیٹرن ہے کہ آپ کی ہارڈ ڈرائیو پر JPEGs کی نمائندگی کرتے ہیں، 607 00:38:20,160 --> 00:38:23,610 کہ سابق طالب علم ہے جن کا ای میل کی طرح میں چند ہفتے پہلے پڑھا کیا 608 00:38:23,610 --> 00:38:25,860 اس کی بہن کی تصاویر کی وصولی کے لئے. 609 00:38:25,860 --> 00:38:30,300 ہم 5 منٹ کے وقفے کیوں نہیں یہاں لے، اور ہم نے یاداشت پر regroup کریں گے. 610 00:38:33,030 --> 00:38:38,610 تو یہاں ہے جہاں چیزیں ایک چھوٹا سا ذہن موڑنے ملتی ہے، لیکن یہ ایک بہت طاقتور قدم ہے 611 00:38:38,610 --> 00:38:40,480 یہ سب زیادہ سمجھنے کی طرف. 612 00:38:40,480 --> 00:38:42,900 نامی pointers.c پروگرام ہے. 613 00:38:42,900 --> 00:38:45,430 یہ آج کے نمونے کے کوڈ میں شامل ہے. 614 00:38:45,430 --> 00:38:51,280 نوٹس ہے کہ پہلے چند لائنوں میں 22 کے ذریعے 19، ہم سب کر رہے ہیں GetString طرح کچھ ہے 615 00:38:51,280 --> 00:38:54,460 اور پتہ آرہے ہیں، کے میں ذخیرہ کرنے. 616 00:38:54,460 --> 00:38:58,380 بھی 3 pset کے لئے آج کے بعد اگر آپ چاہتے ہیں لیکن 4 pset اور 617 00:38:58,380 --> 00:39:01,030 آپ اپنے دور ان کی تربیت پہیوں کہاں سے شروع کر سکتے ہیں، 618 00:39:01,030 --> 00:39:04,030 کوئی دکھاوا کہ ڈور اب موجود وجہ ہے. 619 00:39:04,030 --> 00:39:07,030 یہ یقینی طور پر صرف چار * کہہ شروع ٹھیک ہے. 620 00:39:07,030 --> 00:39:12,610 >> ایک طرف ایک کے طور پر، آپ کو آن لائن حوالہ جات میں اور کتابوں میں ستارہ اکثر متغیر کے ساتھ دیکھ سکتے ہیں. 621 00:39:12,610 --> 00:39:15,600 آپ کے پاس اس کے دونوں اطراف کے ارد گرد خالی جگہوں کو بھی دیکھ سکتے ہیں. 622 00:39:15,600 --> 00:39:17,680 ان میں سے سب فعل درست ہیں. 623 00:39:17,680 --> 00:39:21,180 اب کے لیے، اگرچہ ہم اس نقطہ نظر پر معیاری، سپر واضح کرنا ہوں گے 624 00:39:21,180 --> 00:39:24,000 کہ کردار پوائنٹر کہہ حروف * کی طرح ہے. 625 00:39:24,000 --> 00:39:25,680 یہ ڈیٹا کی قسم ہے. 626 00:39:25,680 --> 00:39:28,730 اور پھر متغیر کے نام کے اس معاملے میں ہے. 627 00:39:28,730 --> 00:39:31,180 تو ہم نے ایک تار ہو گیا ہے اور ہم نے یہ کہا جاتا ہے. 628 00:39:31,180 --> 00:39:35,180 اور پھر یہاں نیچے نوٹس ہے کہ اصل میں میں کیا کر trickery تھوڑا سا رہا ہوں. 629 00:39:35,180 --> 00:39:39,080 یہ پوائنٹر ریاضی، جو سپر سادہ طرح کی ہے کہا جاتا ہے. 630 00:39:39,080 --> 00:39:41,790 یہ صرف کا مطلب ہے اور اشارہ subtract شامل کی تعداد. 631 00:39:41,790 --> 00:39:43,660 لیکن یہ اصل میں کام کرتا ہے. 632 00:39:43,660 --> 00:39:49,170 بظاہر یہ پروگرام کے تار اس طرح نتیجہ ہے کہ فی سطر 1 کردار پرنٹ - 633 00:39:49,170 --> 00:39:54,920 تو ہم خراب جہاں یہ جا رہا ہے، اشارہ بنانے، اشارہ چلانے کر سکتے ہیں، مجھے اندر زوم 634 00:39:54,920 --> 00:39:58,940 اب کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے خوش اور قسم درج کریں جیسے کچھ میں قسم دو 635 00:39:58,940 --> 00:40:01,080 اور یہ فی سطر 1 کردار پرنٹ. 636 00:40:01,080 --> 00:40:04,730 تک پہلے دوسری، ہم مربع بریکٹ سنکیتن کے ساتھ اس نے کیا کیا کریں گے. 637 00:40:04,730 --> 00:40:09,760 ہم لوپ کے لئے ہے اور ہم کے کے printf کرنا ہوتا [i] اور ہم اس بار بار بار کر سکتے ہیں 638 00:40:09,760 --> 00:40:11,950 ہر لائن کے آخر میں ایک الٹا سلیش (ن) کے ساتھ. 639 00:40:11,950 --> 00:40:16,800 لیکن اس پروگرام کے مختلف ہے. اس پروگرام کا استعمال کرتے ہوئے، لفظی ہے، ریاضی. 640 00:40:16,800 --> 00:40:18,860 تو یہاں کیا ہو رہا ہے؟ 641 00:40:18,860 --> 00:40:24,720 سب سے پہلے، اس سے پہلے یہ بھی لوپ executes کیا، صرف صاف ہو جائے، کے اصل ہے؟ 642 00:40:24,720 --> 00:40:27,270 S ہے؟ >> [طالب علم] پتہ ہے. >> پتہ. 643 00:40:27,270 --> 00:40:32,980 >> اس لفظ میں پہلا کردار اور اس کے ایڈریس ہیلو کی صورت میں ہے،، جو گھنٹہ ہے. 644 00:40:32,980 --> 00:40:37,370 تو کے اس مخصوص مثال میں ہے، ایچ ایڈریس. 645 00:40:37,370 --> 00:40:41,850 تو کیا یہ کرنا مطلب ہے +؟ 646 00:40:41,850 --> 00:40:46,280 ٹھیک ہے، میں اس میں لوپ 0 سے شروع ہوتی ہے. ہم نے بہت کہ کئی بار کیا ہے. 647 00:40:46,280 --> 00:40:49,760 میں سٹرنگ کی لمبائی تک جاؤ، بظاہر جا رہا ہے. 648 00:40:49,760 --> 00:40:53,950 تو اس لوپ کے پہلے iteration میں ظاہر 0 ہے. 649 00:40:53,950 --> 00:41:01,740 تو یہ اظہار کہہ کے میں + ہے - بلکہ، S +0- کہ ظاہر ہے صرف کی ہے. 650 00:41:01,740 --> 00:41:04,320 تو کیا * ہے کے یہاں ہے؟ 651 00:41:04,320 --> 00:41:08,530 اب ہم ایک تھوڑا سا مختلف انداز میں ستارہ کا استعمال کر رہے ہیں. 652 00:41:08,530 --> 00:41:13,080 آپ کے وزٹرز کا ریکارڈ رکھا آگے بڑھیں اور ٹی سے چھٹکارا کیونکہ ہم ٹی کے کی کاپیاں کے بارے میں بات کر کیا رہے ہیں. 653 00:41:13,080 --> 00:41:15,540 اب ہم صرف کے شامل کہانی بتانے کے لئے کرنا چاہتے ہیں. 654 00:41:15,540 --> 00:41:20,090 اور تو اس وقت قسم سٹرنگ کے بعد، ہماری دنیا لگتا ہے بہت طرح اس نے اس سے پہلے 655 00:41:20,090 --> 00:41:26,630 کے ایچ ایڈریس ذخیرہ کرنے اور عام طور پر سٹرنگ میں کی طرف اشارہ کرتے ہوئے خوش ہیں. 656 00:41:26,630 --> 00:41:33,170 اگر اب میں * کی طرح ایک لائن کرتے ہیں (زبانیں + میں)، یہ کرنے کی کوشش کرنے دو 657 00:41:33,170 --> 00:41:40,140 تو (زبانیں میں + *). مجھے کیونکہ یہ 0 آسان بنانے، لہذا یہ * (+0 زبانیں) ہے. 658 00:41:40,140 --> 00:41:43,790 ٹھیک ہے، ایک منٹ رکو. مزید آسان بنائیں. یہ * (زبانیں) ہے. 659 00:41:43,790 --> 00:41:47,020 ٹھیک ہے، اب قوسین پاگل کی طرح ہیں، تو اب ہم صرف کرتے ہیں * کے. 660 00:41:47,020 --> 00:41:50,540 تو، اس لوپ، وہ لائن پر روشنی ڈالی ہے، 26 کی پہلی iteration میں 661 00:41:50,540 --> 00:41:53,650 بہت اس پرنٹنگ کے برابر ہے. 662 00:41:53,650 --> 00:41:56,040 کے * اعداد و شمار کی قسم کیا ہے؟ 663 00:41:56,040 --> 00:42:00,770 وجہ سے اس تناظر میں، ستارہ S خود کے ساتھ ہوتا ہے، 664 00:42:00,770 --> 00:42:04,930 لیکن خاص طور پر، کیونکہ ہم نہیں رہ کے اعلان کر رہے ہیں، 665 00:42:04,930 --> 00:42:09,730 ہم ایک متغیر پیدا نہیں کر رہے ہیں اب، 26 سطر میں چار * کا کوئی ذکر نہیں ہے، 666 00:42:09,730 --> 00:42:14,280 مطلوبہ الفاظ کی سٹرنگ کا کوئی ذکر نہیں ہے، ہم صرف کے نام کے متغیر کا استعمال کرتے ہوئے کر رہے ہیں، 667 00:42:14,280 --> 00:42:19,650 یہ پتہ چلا ہے اب سٹار تھوڑا سا مختلف ہے، اور اس کا اقرار بھی معنی بردوست ہے. 668 00:42:19,650 --> 00:42:26,590 * یہاں کے کا مطلب ہے کہ جو کچھ بھی وہاں ہے کے میں ایڈریس اور پرنٹ. 669 00:42:26,590 --> 00:42:33,750 کی * تو اس کے یہاں ہے، ہے - قسم کے Chutes سیڑھی کی طرح، تیر کی پیروی کرتے ہیں - یہاں. 670 00:42:33,750 --> 00:42:35,850 تو یہ * کی ہے. 671 00:42:35,850 --> 00:42:39,060 >> تو اوپر 26 میں لوپ کی پہلی iteration پر کیا چھپا ہو جاتا ہے؟ 672 00:42:39,060 --> 00:42:42,170 میں٪ C، جس میں ایک کردار کے لئے پلیس ہولڈر ہے پرنٹ، 673 00:42:42,170 --> 00:42:48,520 پھر ایک نئی سطر کے لئے کریں \ n. * (زبانیں میں +) جہاں میں 0 بس یہ ہے. 674 00:42:48,520 --> 00:42:53,670 تو کیا چار میں٪ C کے لئے میں کیا جگہ ہے؟ H. 675 00:42:53,670 --> 00:42:56,900 آپ شاید دیکھ سکتے ہیں جہاں یہ جا رہا ہے - لوپ کے اگلے iteration میں - 676 00:42:56,900 --> 00:43:01,350 تاکہ اگلے iteration میں ظاہر ہے 1 ہے، اس کا مطلب یہ ہے +1 s کو، 677 00:43:01,350 --> 00:43:05,580 اور اس کے بعد اب میں قوسین کی ضرورت ہے کیونکہ اب سٹار کو کہنے کی ضرورت ہے؟ 678 00:43:05,580 --> 00:43:08,620 میموری ایڈریس +1 s کو جانا. 679 00:43:08,620 --> 00:43:14,170 کے کیا ہے؟ میں وقت میں واپس رول اور کا کہنا ہے کہ یہ تیر اب ہمیں اصل میں نہیں ہے کوئی اپکار کر رہے ہوں. 680 00:43:14,170 --> 00:43:18,450 ہے خاص طور سے دو کا کہنا ہے کہ یہ تعداد 123 ذخیرہ کرنے 681 00:43:18,450 --> 00:43:25,110 کیونکہ میں اس جملے کے آغاز ہیلو، یہ 123 کا پتہ ہے، یہ 124 ہے، اور وغیرہ. 682 00:43:25,110 --> 00:43:30,550 تو دوسری iteration جب میں +1 s کو کہہ رہا ہوں، یہ 123 +1 کہہ رہے کی طرح ہے، 683 00:43:30,550 --> 00:43:35,340 تو دوسری صورت میں 124 کے طور پر کہا جاتا ہے، جو چار دوسرے iteration پر چھپا ہو جاتا ہے؟ 684 00:43:35,340 --> 00:43:37,850 میموری 124 پتے پر ای. 685 00:43:37,850 --> 00:43:44,440 پھر +، 125، 126، 127، اور اس لوپ شکر رک جاتا ہے اس سے پہلے کہ ہم یہاں ملتا ہے 686 00:43:44,440 --> 00:43:49,040 کیونکہ میں strlen کا استعمال کرتے ہوئے اس بات کا یقین کر لیں کہ میں بہت زیادہ شمار نہیں کرتا رہا ہوں. 687 00:43:49,040 --> 00:43:50,810 تو یہ بھی ہے. 688 00:43:50,810 --> 00:43:55,000 ایک بار پھر، یہ ہے جیسے ہم ایک ہفتے پہلے کیا تھا. 689 00:43:55,000 --> 00:43:59,200 مجھے اس کے نیچے لائن پر لکھنے اگرچہ ہم دونوں نہیں کرنا چاہتا. 690 00:43:59,200 --> 00:44:02,500 اس جیسی ہے. 691 00:44:02,500 --> 00:44:08,310 >> تو اگرچہ کی ایک تار ہے، جیسا کہ ہم گیا ہے ہفتوں کے لئے بلا کی واقعی میں ایک چار * ہے. 692 00:44:08,310 --> 00:44:13,270 تو اگر ہم سپر مقعد کرنا چاہتے ہیں، مخصوص کردار کو لکھنے پر بہت مناسب ہے 693 00:44:13,270 --> 00:44:17,490 ith ان عددی پتے اور اس کے اسٹار آپریٹر کا استعمال کرتے ہوئے جگہ پر، 694 00:44:17,490 --> 00:44:20,470 لیکن سچ کہوں تو، یہ اتنا کلینر ہے. تو یہ برا نہیں ہے. 695 00:44:20,470 --> 00:44:26,720 کوئی وجہ سے 27 لائن یہاں کیا کر رہے ہو، روکو لیکن 26 فعل ایک ہی ہے، 696 00:44:26,720 --> 00:44:31,570 اور یہ فعل بالکل وجوہات کی بناء پر ہے کہ ہم کیا گیا ہے، اس طرح اب تک بات چیت کے لئے ایک ہی ہے. 697 00:44:31,570 --> 00:44:33,650 اور آخر میں، 29 صرف اچھے عمل ہے. 698 00:44:33,650 --> 00:44:38,420 کے مفت کال کر رہا ہے کا مطلب یہ ہے کہ اب تم واپس دے میموری ہے کہ GetString نے تمہیں دیا تھا رہے ہو 699 00:44:38,420 --> 00:44:41,630 کیونکہ پھر پیر کے طور پر میں نے ذکر کیا، ہفتوں کے لئے GetString 700 00:44:41,630 --> 00:44:44,180 آپ کے کوڈ میں ایک مسئلے شروع کیا گیا ہے. 701 00:44:44,180 --> 00:44:46,490 ہفتوں کے لئے آپ کا کوڈ میموری لیک دیکھا گیا ہے 702 00:44:46,490 --> 00:44:49,970 آپ کو جس ہے میموری کے لئے GetString پوچھ رہا لیکن آپ نے اسے کیا گیا ہے کبھی واپس نہیں دے. 703 00:44:49,970 --> 00:44:53,410 اور جو جان بوجھ کر ہماری طرف سے منتخب کیا گیا تھا pedagogically 704 00:44:53,410 --> 00:44:55,880 کیونکہ یہ صرف جلد کے بارے میں سوچنے کے لئے بہت زیادہ ہے. 705 00:44:55,880 --> 00:44:57,710 لیکن اب ہم مزید توازن کی ضرورت ہے. 706 00:44:57,710 --> 00:45:00,830 اگر آپ میموری کے لئے کمپیوٹر سے دعا گو ہیں، کے طور پر GetString کے لئے معاملہ ہے، 707 00:45:00,830 --> 00:45:02,820 کے طور پر معاملہ malloc کے لئے بظاہر ہے، 708 00:45:02,820 --> 00:45:07,970 اب آپ لازما 4 pset کے آگے کے لئے بھی مفت کسی بھی ایسی میموری. 709 00:45:07,970 --> 00:45:11,650 نوٹس یہ int N کہنے سے مختلف ہے. 710 00:45:11,650 --> 00:45:15,040 آپ اس آزاد کرنے کی ضرورت نہیں کیونکہ آپ GetString فون نہیں کیا 711 00:45:15,040 --> 00:45:16,890 اور آپ malloc فون نہیں کیا. 712 00:45:16,890 --> 00:45:20,610 >> اور یہاں تک کہ اگر تم نے فون کیا GetInt جیسا کہ ہم آخر میں نظر آئے گا، 713 00:45:20,610 --> 00:45:25,520 GetInt آپ کے لئے میموری مختص نہیں ہے کیونکہ آپ کے ارد گرد اصل integers منتقل کر سکتی ہیں 714 00:45:25,520 --> 00:45:29,430 اور floats اور حروف صرف راستہ ہم نے ہفتے کے لئے کر رہا ہے. 715 00:45:29,430 --> 00:45:33,960 ڈور، اگرچہ، خاص ہیں کیونکہ واقعی وہ ایک سے زیادہ حروف کے concatenation ہیں. 716 00:45:33,960 --> 00:45:37,450 تو وہ صرف حروف اور floats اور ints سے مختلف ہیں اور پسند کرتے ہیں. 717 00:45:37,450 --> 00:45:39,980 لیکن ہم اس سے پہلے کہ طویل واپس آ جائیں گے. 718 00:45:39,980 --> 00:45:44,920 اشارہ کے اس آغاز پر کوئی سوال؟ جی ہاں. 719 00:45:44,920 --> 00:45:49,690 [اشراوی طالب علم سوال] 720 00:45:49,690 --> 00:45:51,440 آہ، بہت اچھا سوال ہے. 721 00:45:51,440 --> 00:45:55,790 کچھ چیزیں C اصل میں آپ کے لئے کرتا ہے میں سے ایک، جو آسان ہے، 722 00:45:55,790 --> 00:46:00,110 ہے یہ آپ کے لئے باہر کے اعدادوشمار سائز ڈیٹا کے قسم کی ہے 723 00:46:00,110 --> 00:46:03,060 اور پھر آپ کے لئے اس طرح کی ضرب ہے. 724 00:46:03,060 --> 00:46:06,610 یہ حروف کی صورت میں غیر متعلقہ ہے کیونکہ تقریبا ہمیشہ ایک چار 1 بائٹ ہے، 725 00:46:06,610 --> 00:46:08,150 تو یہ صرف کام کرتا ہے. 726 00:46:08,150 --> 00:46:11,220 لیکن بحث کی خاطر کے لئے، اگر آپ واقعی integers چھپائی کر رہے تھے 727 00:46:11,220 --> 00:46:15,500 اور آپ کو کچھ کی قیمت جو ایک عددی کی طرف اشارہ کر رہا تھا پرنٹ کی کوشش کر رہے تھے، 728 00:46:15,500 --> 00:46:20,720 آپ اسی طرح 4 + کرنے کی ضرورت نہیں * میں صرف اس وجہ سے ایک int 4 بائٹس ہے. 729 00:46:20,720 --> 00:46:25,780 پوائنٹر ریاضی کا مطلب یہ ہے کہ سی اور سنکلک ہے کہ آپ کے لئے ریاضی کرتے ہیں. 730 00:46:25,780 --> 00:46:29,190 آپ کے بارے میں دیکھ بھال کی ہے انسانی احساس کی طرح میں گنتی ہے. جی ہاں. 731 00:46:29,190 --> 00:46:35,200 [طالب علم] اگر آپ کو لوپ کے لئے ایک کے اندر ایک تار کا اعلان کرتے ہیں، تو آپ اسے بعد میں آزاد ہے؟ 732 00:46:35,200 --> 00:46:36,760 اچھا سوال ہے. 733 00:46:36,760 --> 00:46:41,390 >> اگر آپ ایک لوپ کے لئے سٹرنگ اندر کا اعلان کر دیا ہے، تو آپ اسے بعد میں آزاد کرنے کی ضرورت ہے؟ 734 00:46:41,390 --> 00:46:47,520 تم صرف مفت میموری کی ضرورت ہے کہ آپ GetString کے ساتھ یا malloc کے ساتھ مختص ہے. 735 00:46:47,520 --> 00:46:53,110 تو اگر آپ کا کہنا ہے کہ کچھ پسند - مجھے گھوبگھرالی منحنی خطوط وحدانی تاکہ تمام کوڈ سے متعلق ہے. 736 00:46:53,110 --> 00:46:58,580 اگر آپ buggily اگرچہ اس طرح کچھ، کیا، چار * T کی = 737 00:46:58,580 --> 00:47:03,450 آپ کو مفت ٹی کی ضرورت نہیں ہے کیونکہ ٹی malloc یا GetString کا کوئی ذکر شامل نہیں کیا ہے. 738 00:47:03,450 --> 00:47:08,960 اگر اس کے برعکس کی طرف سے آپ کو یہ کیا، GetString، تو جی ہاں، آپ کو مفت ٹی کی ضرورت ہو گی. 739 00:47:08,960 --> 00:47:14,350 اور حقیقت میں، آپ صرف ایسا کرنے کا موقع اب اس لوپ کے اندر گنجائش کے اسی مسئلہ کے لئے ہے، 740 00:47:14,350 --> 00:47:16,060 ہے کہ ہم نے ماضی میں بھی بات چیت کی ہے. 741 00:47:16,060 --> 00:47:18,830 ورنہ تم میموری رکھا جائے آونٹن تھا، میموری آونٹن، میموری آونٹن 742 00:47:18,830 --> 00:47:21,230 اور پروگرام کے اختتام پر کیونکہ آپ کہ لوپ سے باہر ہیں، 743 00:47:21,230 --> 00:47:24,240 T موجود نہیں ہے لیکن آپ کے آپریٹنگ سسٹم کے کبھی نہیں کہا 744 00:47:24,240 --> 00:47:26,750 ہے کہ آپ اس میموری کی ضرورت نہیں تھی اب. 745 00:47:26,750 --> 00:47:30,430 اور 4 یا 5 pset کے لئے، ہم نامی Valgrind پروگرام کے ساتھ بہت پہلے آپ سسججت گے، 746 00:47:30,430 --> 00:47:34,160 جو روح میں GDB کی طرح ہے کہ میں اس arcane انٹرفیس کی کسی حد تک مل گیا ہے، 747 00:47:34,160 --> 00:47:35,750 لیکن زندگی میں آپ کی مدد کرنے کے لئے اس کا مقصد ہے. 748 00:47:35,750 --> 00:47:39,380 اور Valgrind ایک پروگرام ہے کہ آپ کے پروگرام مستقبل میں تلاش 749 00:47:39,380 --> 00:47:42,550 کی تلاش میں میموری لیک، چاہے GetString یا malloc سے 750 00:47:42,550 --> 00:47:47,800 جو ہم سب کا استعمال کرتے ہوئے شروع کر دیں گے جیسا کہ ہم CS50 لائبریری کا استعمال کرتے ہوئے زیادہ سے زیادہ کو روکنے کے. 751 00:47:47,800 --> 00:47:53,030 آخر ہم اب الفاظ کی طرح کی تھیوری اور اس میں ذہنی ماڈل کی طرح 752 00:47:53,030 --> 00:47:55,170 جس کے ساتھ اس ٹوٹی پروگرام کو حل کرنے کے. 753 00:47:55,170 --> 00:47:59,410 >> تو اس ٹوٹے ہوئے پروگرام میں، سویپ سویپ کے اندر کام کرتا ہے، 754 00:47:59,410 --> 00:48:05,280 لیکن یہ اہم اصل میں کبھی نہیں کام کیا ہے کیونکہ مرکزی X اور Y، یاد میں منظور، 755 00:48:05,280 --> 00:48:07,260 اور ان اقدار کی طرف سے میں منظور کیا گیا تھا، تو بات کرنے کی. 756 00:48:07,260 --> 00:48:09,330 ان کی نقول پر تبادلہ دیا گیا. 757 00:48:09,330 --> 00:48:12,520 سویپ کے آخر تک، a اور b یقینا کیا گیا تھا تبادلہ، 758 00:48:12,520 --> 00:48:16,120 لیکن کورس کے X اور Y، جیسا کہ ہم پیر کو بات چیت کی، نہیں کیا گیا تھا. 759 00:48:16,120 --> 00:48:19,940 تو میں سبز رنگ میں یہاں تجویز ہے کہ یہ اصل میں حل ہے. 760 00:48:19,940 --> 00:48:22,640 اور اصل میں، مجھے میرے ستارے مسلسل کے منتقل 761 00:48:22,640 --> 00:48:24,440 پھر، اگرچہ فعل اس سے کوئی فرق نہیں پڑتا ہے. 762 00:48:24,440 --> 00:48:28,730 مستقبل کے ہفتوں میں ہم نے اس بات کی وضاحت کب اور کیوں اس سے فرق پڑتا ہے بات کریں گے. 763 00:48:28,730 --> 00:48:30,600 تو سبز رنگ میں اب ایک حل ہے. 764 00:48:30,600 --> 00:48:33,700 اصل میں، یہ ایک پوری بہت messier لگتا ہے کیونکہ میں ان تمام ستاروں کی. 765 00:48:33,700 --> 00:48:35,380 مجھے ایک بات کی طرف اشارہ ہے. 766 00:48:35,380 --> 00:48:40,040 یہاں سب سے اوپر لائن جہاں اس کا کہنا ہے کہ int * ایک اور int B * 767 00:48:40,040 --> 00:48:42,820 ہے بنیادی طور پر ایک ہی بات کر رہے کیونکہ یہ ہمیشہ ہے. 768 00:48:42,820 --> 00:48:47,070 2 دلائل یا پیرامیٹرز کا اعلان تبادلہ ہے، 769 00:48:47,070 --> 00:48:49,940 جن میں سے پہلے ایک int پوائنٹر ہے قرار دیا، 770 00:48:49,940 --> 00:48:53,100 جس میں سے دوسری نامی ایک int ب پوائنٹر ہے. 771 00:48:53,100 --> 00:48:55,770 صرف ایک ہی چیز ہے جو کہ اس وقت نئے ہے یہ حقیقت ہے کہ وہاں ایک ستارہ ہے. 772 00:48:55,770 --> 00:48:59,340 >> اس کا کیا مطلب ہے؟ ب ایک int نہیں ہے، ایک int نہیں ہے. 773 00:48:59,340 --> 00:49:04,100 ایک int کا پتہ ہے اور بی ایک مختلف int کے ایڈریس ہے. 774 00:49:04,100 --> 00:49:06,980 نیچے یہاں، یہ وہ جگہ ہے جہاں میں مانتا ہوں C مبہم ہو جاتا ہے. 775 00:49:06,980 --> 00:49:09,790 اب ہم ایک ستارہ کا استعمال کرتے ہوئے کر رہے ہیں، لیکن وہ اس سلسلے میں مختلف معنی ہے. 776 00:49:09,790 --> 00:49:13,150 کیونکہ ہم اشارہ اعلان نہیں کر رہے ہیں جیسا کہ ہم نے یہاں ہیں، 777 00:49:13,150 --> 00:49:15,500 یہاں ہم چیزوں محولہ لقب ضبطی کر رہے ہیں. 778 00:49:15,500 --> 00:49:21,520 تو تکنیکی طور پر، سویپ کے اندر پہلی، دوسری اور تیسری لائن کے اس تناظر میں ستارہ 779 00:49:21,520 --> 00:49:24,560 ہے dereference آپریٹر، جس کا مطلب صرف اتنا وہاں چلتے ہیں. 780 00:49:24,560 --> 00:49:27,400 تو میری انگلی H تیر کے بعد، 781 00:49:27,400 --> 00:49:31,100 * ایک ذريعہ ہو، اور اس ایڈریس پر جاؤ اور آپ کے وزٹرز کا ریکارڈ رکھا int ہے کہ. 782 00:49:31,100 --> 00:49:34,250 * بی کے ذرائع سے پتہ پر جاؤ اور میرے پاس وہاں کیا ہے. 783 00:49:34,250 --> 00:49:40,730 تو پیر اب کے فریموں کی ایک اسٹیک کے استعمال سے تصویر redraw 784 00:49:40,730 --> 00:49:43,130 جس کے سب سے نیچے ایک اہم جا رہا ہے، 785 00:49:43,130 --> 00:49:47,600 جس کے اوپری ایک سویپ کی جا رہی ہے، 786 00:49:47,600 --> 00:49:50,880 تاکہ ہماری دنیا میں صرف پیر کے روز کی طرح لگتا ہے، اس طرح،. 787 00:49:50,880 --> 00:49:53,620 میموری کا ایک حصہ ہے کہ اہم کرنے کے لئے استعمال کی جا رہی ہے ہے. 788 00:49:53,620 --> 00:49:56,520 >> پیر سے یاد سے قبل بتایا کہ آج کا یہ پروگرام صرف 2 متغیر تھی، 789 00:49:56,520 --> 00:50:01,930 x اور کہا جاتا Y کہا جاتا ہے، اور میں نے تعداد کو ڈال دیا 1 اور 2 کی تھی وہاں. 790 00:50:01,930 --> 00:50:06,580 اب جب میں طرح تبادلہ فون میں پیر کے روز کیا، 791 00:50:06,580 --> 00:50:11,000 جو پہلے جب میں نے اس پروگرام کے سرخ ورژن کا استعمال کیا ہے، اس طرح لگ رہا ہے، 792 00:50:11,000 --> 00:50:17,470 میں 2 پیرامیٹرز، بی اور ہے، اور جو ہم یہاں اور یہاں لکھا ہے؟ 793 00:50:17,470 --> 00:50:21,160 صرف 1 اور 2، لفظی X اور Y کے نقل کرتا ہے. 794 00:50:21,160 --> 00:50:23,070 آج ہم اس کو تبدیل. 795 00:50:23,070 --> 00:50:28,510 آج ints میں گزرنے والے کی بجائے ایک اور بی ہم 2 پتوں میں منظور کرنے جا رہے ہیں. 796 00:50:28,510 --> 00:50:34,290 وہ پتے ints کی طرف اشارہ ہو جائے، لیکن وہ پتے خود ints نہیں کر رہے ہیں. 797 00:50:34,290 --> 00:50:37,330 وہ پتے ہیں. یہ بجائے ایک ای میل ایڈریس کی طرح ہے. 798 00:50:37,330 --> 00:50:40,580 تو اب ہم صرف اپنے آپ کو سکرین پر تھوڑا اور تفصیل دینے کی ضرورت ہے. 799 00:50:40,580 --> 00:50:43,250 یہ اپنے کمپیوٹر کی میموری ہے کیونکہ یہ تمام دن تھا. 800 00:50:43,250 --> 00:50:45,120 اب ہم کچھ صوابدیدی نمبر کی منصوبہ بندی کی ضرورت ہے. 801 00:50:45,120 --> 00:50:50,580 تو صرف موقع کی طرف سے صرف یہ کہنا، کہ یہ میموری 123 پتہ، 124 ہے. 802 00:50:50,580 --> 00:50:55,660 چلو کا کہنا ہے کہ یہ 125 ہے، 126 ہے، اور وغیرہ، لیکن ہے کہ مکمل طور پر غیر منطقی ہے. 803 00:50:55,660 --> 00:50:58,590 ہم صرف میری یاد میں کچھ تعداد کی منصوبہ بندی کی ضرورت ہے. 804 00:50:58,590 --> 00:51:04,030 تو اب جب میں دراصل X اور Y کے گزر، میں جا رہا ہوں X اور Y کے پاس نہیں کر رہا ہوں؛ 805 00:51:04,030 --> 00:51:08,400 میں ای میل ایڈریس میں X اور Y کے پاس، اس سے بات کرنے، جا رہا ہوں 806 00:51:08,400 --> 00:51:11,870 تاکہ جو ہو جاتا ہے یہاں اور یہاں ذخیرہ 1 اور 2 نہیں ہے، 807 00:51:11,870 --> 00:51:16,030 لیکن اگر تم میرے چھوٹے لفظی دیکھ سکتے ہیں، یہاں اور یہاں میں کیا منظور ہو جاتا ہے؟ 808 00:51:16,030 --> 00:51:23,340 [اشراوی طالب علم کے جواب] بالکل. >> 123 یہاں ڈال دیا جاتا ہے اور 124 یہاں ڈال دیا ہو جاتا ہے. 809 00:51:23,340 --> 00:51:28,910 >> اب، میں کیونکہ یہ بہت ہی پہلی سطر یہاں راہ میں سب سے اوپر سٹار کیا کرتے تھے، 810 00:51:28,910 --> 00:51:34,340 میرا پروگرام صرف 123 کہ 124 جانتا ہے، اگرچہ وہ ظاہر integers ہیں 811 00:51:34,340 --> 00:51:40,160 کسی بھی انسان کہ محسوس کر سکتا ہے، وہ پتے، عددی پتے کے طور پر تشریح کرنا چاہئے. 812 00:51:40,160 --> 00:51:43,250 انہوں نے اور خود ints نہیں ہیں، وہ پتے ہیں، 813 00:51:43,250 --> 00:51:46,120 اور وہ اس لئے ہے کیونکہ میں واضح طور پر وہاں کے ستاروں پر ڈال دیا. 814 00:51:46,120 --> 00:51:51,360 تو اب اپنے اصل کوڈ یہاں کس کا ہوتا ہے پہلی، دوسری اور تیسری لائن میں؟ 815 00:51:51,360 --> 00:51:53,380 تصویر کے باقی اپنی طرف متوجہ. 816 00:51:53,380 --> 00:51:56,980 Tmp پیر تھا کی طرح ہے. tmp کے بارے میں کچھ خاص نہیں ہے. 817 00:51:56,980 --> 00:52:03,060 یہ صرف ایک مقامی 32 بٹیں متغیر ہے، اور اندر میں بظاہر ایک * کی قدر ذخیرہ کرنے ہوں. 818 00:52:03,060 --> 00:52:08,580 اب، اگر میں نے صرف اتنا کہا tmp = ایک، جو میں یہاں ڈال دیں گے؟ >> [طالب علم] 123. 819 00:52:08,580 --> 00:52:10,370 123. لیکن یہ نہیں ہے کہ میں کیا کر رہا ہوں. 820 00:52:10,370 --> 00:52:13,670 میں کہہ رہا ہوں tmp = * ایک. سٹار کا مطلب وہاں جاؤ. 821 00:52:13,670 --> 00:52:19,370 تو یہاں ایک ہے، 123. میں وہاں کیسے جا سکتا ہوں؟ ڈرامہ کی طرح ایک تیر ہے. 822 00:52:19,370 --> 00:52:24,460 ٹھیک ہے، یہ ہے، 1. تو tmp میں کیا محفوظ ہو جاتا ہے، بظاہر؟ صرف 1. 823 00:52:24,460 --> 00:52:29,620 تو دوسرے الفاظ میں، tmp * ایک * ایک کا مطلب ہے پتہ ہے کہ اس وقت میں ہے، 824 00:52:29,620 --> 00:52:31,320 جو بظاہر 123 ہے. 825 00:52:31,320 --> 00:52:33,910 >> ٹھیک ہے، ہم یہاں پر 123 مقام پر ہیں، میں نمبر 1، 826 00:52:33,910 --> 00:52:35,670 تو میں نمبر 1 کے لئے پیش کیا جا رہا ہوں. 827 00:52:35,670 --> 00:52:39,020 اب میں لائن 2 میں کیا کرتے ہیں، * ایک = * B؟ 828 00:52:39,020 --> 00:52:44,570 یہ ایک تھوڑا شامل کر دیا گیا ہے کیونکہ اب کیا ہے؟ یہ 123 ہے. 829 00:52:44,570 --> 00:52:50,220 تو * کہاں ہے؟ اس وقت جہاں میں پہلے تھا. تو وہاں جانا ہے. ٹھیک ہے. 830 00:52:50,220 --> 00:52:53,420 اب آخر میں، اور پھر آخر میں اس کا کوئی مطلب شروع، امید گا، 831 00:52:53,420 --> 00:53:00,280 * ب کا مطلب ہے کہ ب میں کیا ہے؟ 124. اس لیے میں وہاں جانے کے لئے کی ضرورت ہے، جو 2 ہے. 832 00:53:00,280 --> 00:53:03,430 تو میں کیا ڈال ہے کہاں؟ 833 00:53:03,430 --> 00:53:10,100 2 یہاں میں چلا جاتا ہے کیونکہ * ب * کا میں چلا جاتا ہے. لہذا میں یہ کر دونگا. 834 00:53:10,100 --> 00:53:13,120 اور تم پہلے ہی شاید دیکھ، کہ ہم اتنا قریب ہو کر سکتے ہیں 835 00:53:13,120 --> 00:53:17,710 یہ مورھ، سادہ مسئلہ پہلی بار کے لئے صحیح طریقے سے حل کرنے کے لئے 836 00:53:17,710 --> 00:53:20,920 کیونکہ اب ہم X تھا اب بھی یاد ہے، 837 00:53:20,920 --> 00:53:23,230 ہم نے 2 نقول ہیں، اس کا اقرار Y،، 838 00:53:23,230 --> 00:53:25,850 لیکن 3 لائن اب * ب کا کہنا ہے کہ. 839 00:53:25,850 --> 00:53:31,080 تو یہاں ب ہے. * ب کا مطلب وہاں جاؤ. تو جہاں جگہ ہے 124؟ 840 00:53:31,080 --> 00:53:35,560 یہ بظاہر یہاں ہے. تو کیا میں یہاں ڈال دیا ہے؟ ظاہر ہے، tmp. 841 00:53:35,560 --> 00:53:39,600 تو اب میں یہ کرتے ہیں. لہذا میں 1 یہاں اور 2 یہاں ہے. 842 00:53:39,600 --> 00:53:43,560 اور اب اس کے تمام، 123، 124، اور 1 کے بارے میں؟ 843 00:53:43,560 --> 00:53:47,910 جیسے ہی سویپ کی واپسی کے طور پر، اس کی یاد کے طور پر اچھا ہے کے طور پر کھو ہے 844 00:53:47,910 --> 00:53:51,070 کیونکہ جلد ہی سویپ کی واپسی، آپریٹنگ سسٹم کے طور پر 845 00:53:51,070 --> 00:53:54,190 کہ میموری مستقبل میں دوبارہ استعمال کریں مفت ہے. 846 00:53:54,190 --> 00:53:58,870 صرف اس نام نہاد اسٹیک کے سب سے نیچے دیئے گئے اہم میموری کے گرد چپک. 847 00:53:58,870 --> 00:54:01,470 >> اور اس طرح ہم آخر میں اب ایک کام کر ورژن ہے. 848 00:54:01,470 --> 00:54:06,310 کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے swap.c میں جانا، اور مندرجہ ذیل نوٹس. 849 00:54:06,310 --> 00:54:11,280 پروگرام کے سب سے اوپر دیئے گئے میں اپنے پروٹوٹائپ کو تبدیل کر دیا ہے int * ایک اور int * ب. 850 00:54:11,280 --> 00:54:15,000 تو صرف ایک چیز میں سے سبز، سرخ، جو برا تھا جو اچھا ہے پر تبدیل کر دیا گیا ہے، 851 00:54:15,000 --> 00:54:17,350 ہے آج میں ان ستاروں کو شامل ہے. 852 00:54:17,350 --> 00:54:21,520 لیکن پھر یہاں ذیل میں خود میں کاپی پڑا تبادلہ، پیسٹ صرف سلائڈ پر کیا تھا. 853 00:54:21,520 --> 00:54:24,140 یہاں اسٹار میں یہاں ایک ستارہ ہے - کہ پروٹوٹائپ سے میل کھاتا ہے - 854 00:54:24,140 --> 00:54:27,930 اور اس کے بعد اب ان تمام چیزوں کے tmp کے علاوہ ستارے ہیں 855 00:54:27,930 --> 00:54:30,680 کیونکہ ایک عارضی متغیر کے استعمال، وہاں کوئی نئی بات نہیں ہے. 856 00:54:30,680 --> 00:54:33,040 میں صرف ایک int کے لئے عارضی اسٹوریج کی ضرورت ہے. 857 00:54:33,040 --> 00:54:34,820 تو ہم ایک ستارہ کی ضرورت نہیں ہے. 858 00:54:34,820 --> 00:54:39,310 ہم صرف اسٹار کی ضرورت ہے تاکہ ہم صوابدیدی حد کے اس طرح سے تجاوز کر سکتے ہیں 859 00:54:39,310 --> 00:54:42,900 اپنے کمپیوٹر کی میموری میں ان 2 فریم کے درمیان. 860 00:54:42,900 --> 00:54:45,630 لیکن ایک آخری چیز کو تبدیل کرنے کی ہے، اور آپ اسے پہلے ہی جھلک ہو سکتا ہے. 861 00:54:45,630 --> 00:54:48,810 کیا دوسری لائن اب واضح طور پر مختلف ہے؟ >> [طالب علم] & X. 862 00:54:48,810 --> 00:54:53,270 >> جی ہاں، اس لئے 25 کوڈ کی آخری سطر میں اس کے لئے کام کرنے کے لئے تبدیل کرنے کی ضرورت ہے ہے. 863 00:54:53,270 --> 00:54:58,360 پہلے ایک ہفتہ اور پیر کو بھی 25 اوپر اس طرح دیکھا، X اور Y کو تبادلہ، 864 00:54:58,360 --> 00:55:02,020 اور یہ تو صرف ٹوٹ کیونکہ اگر تم کہو تو سویپ (X Y،) 865 00:55:02,020 --> 00:55:05,660 آپ X اور Y کی کاپیاں تبادلہ دے رہے ہیں، تو یہ اس کی بات کر رہی ہے، 866 00:55:05,660 --> 00:55:09,080 لیکن آپ X اور Y خود اصل میں کبھی نہیں تبدیل کر رہے ہیں. 867 00:55:09,080 --> 00:55:12,880 تو بھی اگر آپ کو اس کردار کبھی نہیں دیکھا ہے کوڈ میں ایمپرسینڈ کے ساتھ پہلے، 868 00:55:12,880 --> 00:55:15,860 صرف ایک اندازہ. کیا ایمپرسینڈ، بظاہر کیا کرتا ہے؟ 869 00:55:15,860 --> 00:55:17,890 [طالب علم] پتہ ہوتا ہے. >> ایڈریس لیتا ہے. 870 00:55:17,890 --> 00:55:21,160 تو ایمپرسینڈ کہہ رہا ہے کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے ایکس کے ایڈریس دینا ہے. 871 00:55:21,160 --> 00:55:25,590 وہ کہاں ہے کون جانتا ہے؟ یہ 123 پر ہوتا ہے. مجھے کوئی پرواہ نہیں. بس کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے ایکس کے ایڈریس دے. 872 00:55:25,590 --> 00:55:28,340 اور Y کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے Y کے ایڈریس دے کا مطلب ہے. 873 00:55:28,340 --> 00:55:34,450 اور ہم ایک لمحے پہلے اس نقطہ کی کہانی تصویر کے ساتھ بالکل مطابق ہے متوجہ کیا. 874 00:55:34,450 --> 00:55:38,310 >> لہذا میں نے اشارہ تسلیم، میرے لئے یقینی طور پر جب میں نے پہلی بار یہ سیکھنے شروع کر دیا کریں گے، 875 00:55:38,310 --> 00:55:40,570 یقینی طور پر سب سے مشکل میرے ذہن کو چاروں طرف سے لپیٹ چیزوں میں سے ایک تھے. 876 00:55:40,570 --> 00:55:43,760 احساس لیکن، خاص طور پر کے طور پر ہم اس طرح کی چیزوں کی ان کے ساتھ کھیلتے رہنا، 877 00:55:43,760 --> 00:55:48,030 اگر آپ اس کے ان سپر آسان ترتیب دیں ٹوٹ ذہنی مسائل uninteresting 878 00:55:48,030 --> 00:55:52,270 صرف تعداد منتقل کے ارد گرد، اشارہ کے ساتھ جواب برم کی ایک بہت 879 00:55:52,270 --> 00:55:56,590 واقعی میں یہ بہت بنیادی میکینکس سے حاصل کر سکتے ہیں. 880 00:55:56,590 --> 00:55:59,070 یہ ایک پتہ ہے. ستارہ کے ساتھ وہاں جاؤ. 881 00:55:59,070 --> 00:56:03,830 یا اس کے برعکس، یہاں ایک ایمپرسینڈ ہے. اعداد و شمار اصل میں کیا پتہ ہے. 882 00:56:03,830 --> 00:56:06,270 ٹھیک ہے. 883 00:56:06,270 --> 00:56:09,000 تو جہاں اس میموری کا سب سے آ رہا ہے؟ 884 00:56:09,000 --> 00:56:12,360 ہم نے اس تصویر کو تیار کے ایک جوڑے بار ہے، اور میں وعدہ رہو ہم اس سے واپس آ جائیں گے، 885 00:56:12,360 --> 00:56:14,920 لیکن یہاں آپ کے کمپیوٹر کی میموری کی نمائندگی کرتا ہے 886 00:56:14,920 --> 00:56:17,420 جو تھوڑا ہمارے چاکبورڈ سے زیادہ لیبل لگا یہاں ہے. 887 00:56:17,420 --> 00:56:21,590 سب سے اوپر متن کے ٹکڑے آپ کے پروگرام کے حوالے سے کیا کی نمائندگی کرتا ہے؟ 888 00:56:21,590 --> 00:56:26,090 [اشراوی طالب علم کے جواب] معذرت >>؟ پھر سے کہو. 889 00:56:26,090 --> 00:56:28,660 [طالب علم] اصل پروگرام. >> اصل پروگرام. 890 00:56:28,660 --> 00:56:32,430 >> 0s اور 1s کہ آپ C کوڈ لکھنے کے بعد مرتب کیا گیا ہے اور اس کے بعد چلانے بجنا تو 891 00:56:32,430 --> 00:56:35,910 اور 1s اور 0s ختم اپ پیدا یاد میں tucked ہو رہی ہے 892 00:56:35,910 --> 00:56:38,570 جب آپ اپنے میک یا پی سی پر ڈبل ایک آئکن پر کلک کریں کیونکہ 893 00:56:38,570 --> 00:56:43,010 یا آپ فوری طور پر ماریو کی طرح ایک کمانڈ چلائیں، اور آپ کی ڈسک سے 0s اور 1s 894 00:56:43,010 --> 00:56:45,700 میموری میں بھری ہوئی تاکہ کمپیوٹر ان جوڑتوڑ کر سکتے ہیں 895 00:56:45,700 --> 00:56:47,540 اور انہیں زیادہ تیزی سے پھانسی. 896 00:56:47,540 --> 00:56:50,880 تو initialized ڈیٹا اور غیر ابتدا شدہ ڈیٹا، ہم ان کے بارے میں زیادہ بات نہیں کریں گے، 897 00:56:50,880 --> 00:56:52,420 لیکن وہ صرف عالمی متغیر ہیں. 898 00:56:52,420 --> 00:56:54,710 Initialized عالمی متغیر کہ آپ اقدار دی کا مطلب ہے؛ 899 00:56:54,710 --> 00:56:59,300 غیر ابتدا شدہ عالمی متغیر کہ آپ اقدار ابھی تک نہیں دے کا مطلب ہے. 900 00:56:59,300 --> 00:57:01,900 پھر ان ماحول متغیر جو میں نے میرے ہاتھ کو مکمل طور پر لہر گے، 901 00:57:01,900 --> 00:57:04,860 لیکن وہ وہاں ہیں اور یہ کہ آپ کے صارف کے نام کی طرح اسٹورز چیزیں 902 00:57:04,860 --> 00:57:08,090 اور نچلے درجے تفصیلات کے دیگر طرح. 903 00:57:08,090 --> 00:57:12,880 لیکن آپ کی میموری کی ترتیب کے juiciest ٹکڑے ٹکڑے بلایا اسٹیک اور ڈھیر بات یہ ہے. 904 00:57:12,880 --> 00:57:17,470 پھر اسٹیک، واضح، میموری ہے کہ جب بھی کام کرتا ہے کہا جاتا ہے استعمال کیا جاتا ہے ہے، 905 00:57:17,470 --> 00:57:19,710 وہاں مقامی متغیر جب بھی ہیں 906 00:57:19,710 --> 00:57:22,120 اور جب بھی پیرامیٹرز کیا جا رہا ہے کے ارد گرد گزر. 907 00:57:22,120 --> 00:57:24,490 یہ ہے کہ تمام اسٹیک میں ہوتا ہے. 908 00:57:24,490 --> 00:57:29,570 ڈھیر کے بارے میں ہم سے بات نہیں کی ہے، لیکن ایک اندازہ ہے جو ڈھیر کا استعمال کرتا ہے. 909 00:57:31,120 --> 00:57:32,690 بس میموری کا ایک مختلف حصہ. 910 00:57:32,690 --> 00:57:36,620 یہ سب سے اوپر یہاں پر تیار ہوتا ہے، لیکن ہے کہ ایک صوابدیدی سچتر کنونشن ہے. 911 00:57:36,620 --> 00:57:41,670 کون بظاہر ڈھیر سے ہفتوں کے لئے میموری کا استعمال کر رہے ہیں؟ 912 00:57:41,670 --> 00:57:44,830 یہ تکنیکی طور پر تم بالواسطہ طور پر ہے. >> [طالب علم] GetString. 913 00:57:44,830 --> 00:57:47,950 GetString اور malloc. تو بنیادی فرق ہے. 914 00:57:47,950 --> 00:57:51,300 >> آپ نے گزشتہ چند ہفتوں کے لئے جانتے ہیں کہ اگر آپ کو میموری کی ضرورت ہے، صرف ایک متغیر کا اعلان. 915 00:57:51,300 --> 00:57:54,560 اگر آپ میموری بہت کی ضرورت ہے، آپ کے تقریب کے اندر صف کا اعلان کریں. 916 00:57:54,560 --> 00:57:59,620 لیکن ہم مسئلہ کا سامنا رکھ دیا ہے ہے اگر تم متغیر کے افعال میں سے مقامی طور پر اندر کا اعلان، 917 00:57:59,620 --> 00:58:05,340 جیسے ہی تقریب کی واپسی کے طور پر، میموری اور ان متغیرات میں کیا ہوتا ہے؟ 918 00:58:05,340 --> 00:58:09,620 بس اس کی طرح اب تمہارا نہیں ہے، ٹھیک ہے؟ یہ صرف conceptually کی طرح غائب ہے. 919 00:58:09,620 --> 00:58:13,950 یہ اب بھی جسمانی طور پر وہاں ہے، ظاہر ہے، لیکن یہ اب استعمال کرنے کے لئے آپ کا حق ہے. 920 00:58:13,950 --> 00:58:17,160 ظاہر ہے، یہ مسئلہ ہے اگر آپ زندگی میں کام لکھنا چاہتے ہیں 921 00:58:17,160 --> 00:58:20,440 جو کہ اصل میں میموری مختص کرتے ہیں اور اسے نہیں دے فورا واپس. 922 00:58:20,440 --> 00:58:24,180 پوائنٹ میں کیس: زندگی میں GetString کا مقصد پہلے سے کوئی اندازہ نہیں ہے 923 00:58:24,180 --> 00:58:26,390 ہے کہ کس طرح ایک تار میں کی بورڈ میں ٹائپ کرنے کے لئے جا رہا ہوں بڑے 924 00:58:26,390 --> 00:58:30,390 لیکن یہ میموری داؤد یا خوش منعقد کرنے پر مختص کرنے کے قابل ہونا چاہئے 925 00:58:30,390 --> 00:58:32,860 یا ایک مکمل مضمون ہے کہ صارف اندر ٹائپ کر سکتے ہیں 926 00:58:32,860 --> 00:58:35,280 تو GetString گیا ہے malloc کا استعمال کرتے ہوئے. 927 00:58:35,280 --> 00:58:38,910 Malloc لہذا اسٹیک نہیں رکھا جائے کا استعمال کرتے ہوئے کرنا ضروری ہے؛ 928 00:58:38,910 --> 00:58:40,770 بجائے اس ملاقات کی ڈھیر بات کا استعمال کرتے ہوئے کر رہا ہے. 929 00:58:40,770 --> 00:58:44,430 میموری کے بارے میں مختلف نہیں ہے. یہ تیز نہیں یا سست یا ایسا کچھ ہے. 930 00:58:44,430 --> 00:58:46,570 یہ ایک مختلف مقام میں صرف جسمانی طور پر ہے. 931 00:58:46,570 --> 00:58:50,120 >> لیکن اصول یہ ہے کہ میموری ڈھیر پر مختص ہے 932 00:58:50,120 --> 00:58:56,180 تم سے دور رکھا جائے گا کبھی نہیں لیا جب تک کہ آپ کہتے ہیں - ایک اندازہ لے - مفت. 933 00:58:56,180 --> 00:59:00,510 کے برعکس، کوئی بھی میموری آپ کو صرف ایک صف اعلان سے اسٹیک پر طلب 934 00:59:00,510 --> 00:59:03,320 یا ایک متغیر قرار دیا جیسا کہ ہم نے ہفتے کے لئے کر رہی 935 00:59:03,320 --> 00:59:05,640 کہ پہلے سے طے شدہ کی طرف سے اسٹیک پر ختم ہوتا ہے. 936 00:59:05,640 --> 00:59:09,550 اور اس وقت کے عظیم 90 فیصد کام کرتا ہے، لیکن ان rarer مواقع پر 937 00:59:09,550 --> 00:59:12,470 آپ میموری مختص کرنے اور اس کے ارد گرد رکھنے جہاں چاہتے ہیں، 938 00:59:12,470 --> 00:59:14,730 تو پھر آپ کی طرح ایک تقریب malloc استعمال کرنے کی ضرورت ہے. 939 00:59:14,730 --> 00:59:19,370 یا ہم جیسے GetString، جس کے نتیجے میں malloc کا استعمال کرتا ہے ایک تقریب کا استعمال کیا ہے. 940 00:59:19,370 --> 00:59:23,300 چلو دیکھتے ہیں جہاں یہ ٹوٹ اور پھر Binky میں جھانکنا لے سکتا ہے. 941 00:59:23,300 --> 00:59:25,820 ہم مستقبل میں اس پر واپس آ جائیں گے. 942 00:59:25,820 --> 00:59:29,270 یہ ایک انتہائی سادہ پروگرام ہے کہ پہلے 2 لائنوں میں کیا کرتا ہے؟ 943 00:59:29,270 --> 00:59:33,460 انگریزی میں ان کی پہلی کوڈ 2 لائنوں اندر کرتے ہیں کے اہم؟ 944 00:59:33,460 --> 00:59:35,600 [اشراوی طالب علم کے جواب] 945 00:59:35,600 --> 00:59:37,880 ہوشیار. یہ آپ کے وزٹرز کا ریکارڈ نہیں دے X یا Y کی ایڈریس ہے. 946 00:59:37,880 --> 00:59:41,840 [طالب علم] ints اشارہ دیتا ہے. >> اچھا لگا. آپ کے وزٹرز کا ریکارڈ رکھا integers 2 اشارہ دے. 947 00:59:41,840 --> 00:59:45,130 دوسرے الفاظ میں، کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے میموری 2 حصوں کہ میں آج ڈرائنگ رہو دے، 948 00:59:45,130 --> 00:59:46,950 اگرچہ میں اب یہ چوکوں کے طور پر ختم،. 949 00:59:46,950 --> 00:59:50,000 کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے میموری 2 حصوں کرو، ایک ایکس فون کیا، ایک Y ملاقات کی - 950 00:59:50,000 --> 00:59:54,320 پہلے میں نے انہیں اور ٹی کہتے ہیں - اور میموری کے اس حصہ کی قسم کیا ہے؟ 951 00:59:54,320 --> 00:59:57,160 یہ پتہ ذخیرہ کرنے جا رہا ہے. 952 00:59:57,160 --> 00:59:59,110 یہ قسم int * ہے. 953 00:59:59,110 --> 01:00:01,630 >> X میں تو ایک int کا پتہ آخر میں زندہ رہے گا، 954 01:00:01,630 --> 01:00:03,860 بالآخر ایک int کا پتہ Y زندہ رہے گا، 955 01:00:03,860 --> 01:00:08,460 لیکن ابتدائی طور پر، X اور Y کے اندر کیا ہے؟ کون جانتا ہے؟ ردی کی ٹوکری میں اقدار. 956 01:00:08,460 --> 01:00:10,180 یہ اشارہ کے ساتھ کوئی تعلق نہیں ہے. 957 01:00:10,180 --> 01:00:12,720 اگر ہم وہاں کچھ ہے، جو جانتا ہے کہ کیا واقعی وہاں نہیں لگا ہے؟ 958 01:00:12,720 --> 01:00:18,950 اب، X. یہاں کیا ہوتا ہے؟ یہ legit ہے کیونکہ X پوائنٹر ہے. یہ ایک int * ہے. 959 01:00:18,950 --> 01:00:21,870 تو اس کا مطلب ہے کہ میں ایکس میں میموری کا کچھ حصہ کا پتہ لگا سکتے ہیں. 960 01:00:21,870 --> 01:00:25,120 malloc کیا واپس کرتا ہے؟ کامل ہے، اس پتے واپس، 961 01:00:25,120 --> 01:00:28,510 میموری کا ایک مکمل حصہ میں پہلی بائٹ کا پتہ ہے. 962 01:00:28,510 --> 01:00:31,140 یہ کتنے بائٹس بظاہر مثال کے طور پر آونٹن، آلات،؟ 963 01:00:31,140 --> 01:00:33,510 ایک int کا سائز کیا ہے؟ 4. 964 01:00:33,510 --> 01:00:36,600 اگر آپ واپس 1 ہفتہ لگتا ہے، یہ انتہائی نہیں ہے اہم ہمیشہ یہ یاد، 965 01:00:36,600 --> 01:00:38,870 لیکن یہ اس صورت میں مفید ہے، 4 بائٹس جاننا ہے. 966 01:00:38,870 --> 01:00:41,770 تو یہ ڈھیر 4 بائٹس پر آونٹن ہے 967 01:00:41,770 --> 01:00:46,110 اور اس نے مجھ سے پہلے ایک کا پتہ واپس آنے منمانے ہے. 968 01:00:46,110 --> 01:00:47,700 اب، کیا X کر رہا ہے؟ 969 01:00:47,700 --> 01:00:52,200 A * X = 42 کیا کر رہا ہے؟ 970 01:00:52,200 --> 01:00:57,150 اگر کہانی میں اس وقت ہم X، جو کچھ ردی کی ٹوکری کی قیمت کے ساتھ اس طرح لگ رہا ہے ہے، 971 01:00:57,150 --> 01:01:04,120 اب یہ کچھ ردی کی ٹوکری کی قیمت کے ساتھ Y، اب لائن 3 میں نے 4 بائٹس مختص ہے. 972 01:01:04,120 --> 01:01:06,950 یہ تصویر بنیادی طور پر اس طرح لگ رہا ہے. 973 01:01:06,950 --> 01:01:12,010 یا اس سے زیادہ خاص طور پر، اگر یہ صوابدیدی 123 کا پتہ ہے، یہ ہے کہ ہماری کہانی کی طرح لگتا ہے. 974 01:01:12,010 --> 01:01:23,940 * X = 42 اب کیا مطلب ہے؟ اس کا مطلب یہ ہے کہ ایڈریس 123 اور ان کی تعداد وہاں 42 ڈال. 975 01:01:23,940 --> 01:01:26,220 میں ان لائنوں کو اپنی طرف متوجہ کرنے کی ضرورت نہیں ہے کیونکہ ہم ڈور نہیں کر رہے ہیں. 976 01:01:26,220 --> 01:01:29,480 >> میں صرف اس طرح لکھا ہے، اور صرف مظاہرہ خاطر کے لئے، 977 01:01:29,480 --> 01:01:33,240 ایک int قسم کی کے طور پر 42 علاقے کا ایک بہت لیتا ہے، 4 بائٹس. 978 01:01:33,240 --> 01:01:35,960 جس سے کہ وہاں کیا ہوا ہے، لیکن اب وہاں ایک مسئلہ ہے. 979 01:01:35,960 --> 01:01:40,580 * Y = 13. یہاں ہونے جا رہا ہے؟ 980 01:01:40,580 --> 01:01:46,470 مسئلہ ہمارے سادہ دنیا میں * Y ہے صرف کا مطلب ہے کہ Y میں ایڈریس. 981 01:01:46,470 --> 01:01:48,590 Y میں کیا ہے؟ یہ کچھ ردی کی ٹوکری کی قیمت ہے. 982 01:01:48,590 --> 01:01:53,150 تو فرض کریں کہ وہ ردی کی ٹوکری کی قدر 5551212 ہے، کچھ اس طرح پاگل ہے. 983 01:01:53,150 --> 01:01:56,750 * Y ذرائع 5551212 کو حل کرنے جاتے ہیں. 984 01:01:56,750 --> 01:02:00,450 یہ یہاں پسند ہے. یہ موجود ہیں، مثال کے طور پر نہیں ہے. 985 01:02:00,450 --> 01:02:05,310 تو * Y 13 کا مطلب ہے کہ میں 13 یہاں اپنی طرف متوجہ کرنے کی کوشش کر رہا ہوں ملتی ہے. یہ موجود ہی نہیں ہے. 986 01:02:05,310 --> 01:02:08,790 میں نے بلیکبورڈ کے طبقہ سے تجاوز کیا ہے. مجھے کیا ملتا ہے؟ 987 01:02:08,790 --> 01:02:14,930 اس خفیہ پیغام انقطاع کی غلطی کی وجہ سے میں یاد میں ڈال کرنے کی کوشش کر رہا ہوں 988 01:02:14,930 --> 01:02:19,470 ایک ایسی جگہ ہے جو موجود نہیں ہے میں 13 کی طرح ایک قدر ہے. 989 01:02:19,470 --> 01:02:23,900 باقی پروگرام کا اس نقطہ یہ نہیں کرتا جب تک ٹھیک ہے، لیکن کام ہو سکتا ہے. 990 01:02:23,900 --> 01:02:25,350 تو اس کہانی بتانے کے لئے کی کوشش. 991 01:02:25,350 --> 01:02:27,830 ہم نے کہ ایک بار ہم hex کے بارے میں بات کی ہے میں واپس آ جائیں گے. 992 01:02:27,830 --> 01:02:30,290 ، چلو اس کے پیچھے جاہیں اور Binky بلایا چیز کے ساتھ یہ نتیجہ اخذ 993 01:02:30,290 --> 01:02:33,710 جو یاد سٹینفورڈ گھر میں بیٹھ کر claymation کے ساتھ کھیلنے کے پروفیسر ہیں، 994 01:02:33,710 --> 01:02:36,380 بالکل وہی ایک ہی پروگرام کی کہانی بتانے کے لئے. 995 01:02:36,380 --> 01:02:40,580 یہ صرف 3 کے بارے میں طویل منٹ ہے. یہاں ہم Binky ہے. 996 01:02:40,580 --> 01:02:45,030 [ویڈیو پر لڑکا اسپیکر] ارے Binky، جاگ جاؤ. یہ پوائنٹر تفریح ​​کے لئے وقت ہو گیا ہے. 997 01:02:45,030 --> 01:02:50,080 [Binky] یہ کیا ہے؟ اشارہ کے بارے میں معلومات حاصل کریں؟ اوہ، واہ! 998 01:02:50,080 --> 01:02:53,700 [لڑکا اسپیکر] ٹھیک ہے، شروع کرنے کے لئے، مجھے لگتا ہے کہ ہم ایک جوڑے اشارہ کی ضرورت کے لئے جا رہے ہیں. 999 01:02:53,700 --> 01:02:57,890 >> [Binky] ٹھیک ہے. اس کوڈ کو 2 اشارہ integers جس کی طرف اشارہ کر سکتے ہیں مختص ہے. 1000 01:02:57,890 --> 01:03:02,220 [لڑکا اسپیکر] ٹھیک ہے. ٹھیک ہے، میں 2 اشارہ دیکھتے ہیں، لیکن وہ کچھ کی طرف اشارہ کرتے ہوئے لگتا نہیں ہے. 1001 01:03:02,220 --> 01:03:05,550 [Binky] یہ ٹھیک ہے. ابتدائی طور پر، اشارہ، کچھ نہیں کی طرف اشارہ کرتے ہیں. 1002 01:03:05,550 --> 01:03:09,270 چیزیں وہ کی طرف اشارہ pointees کہا جاتا ہے، اور ان کی ترتیب ایک الگ قدم ہے. 1003 01:03:09,270 --> 01:03:12,330 [لڑکا اسپیکر] اوہ، ٹھیک ہے، ٹھیک ہے. مجھے پتہ تھا. pointees علیحدہ ہیں. 1004 01:03:12,330 --> 01:03:15,630 یر، تو آپ کو ایک pointee کس طرح مختص ہے؟ 1005 01:03:15,630 --> 01:03:21,510 [Binky] ٹھیک ہے. یہ کوڈ ایک نئے عددی pointee مختص ہے، اور یہ حصہ ایکس اس کی طرف اشارہ کرنے کے متعین کرتا ہے. 1006 01:03:21,510 --> 01:03:23,500 [لڑکا اسپیکر] ارے، یہ بہتر لگتا ہے. 1007 01:03:23,500 --> 01:03:26,030 تو اسے کچھ کرنا. >> [Binky] ٹھیک ہے. 1008 01:03:26,030 --> 01:03:30,300 میں پوائنٹر X dereference اس pointee میں 42 نمبر جمع کریں گے. 1009 01:03:30,300 --> 01:03:34,410 یہ چال کے لئے میں میری محولہ لقب ضبطی کے جادو کی چھڑی کی ضرورت ہو گی. 1010 01:03:34,410 --> 01:03:38,610 [لڑکا اسپیکر] آپ کی محولہ لقب ضبطی کے جادو کی چھڑی ہے؟ یہ بہت اچھا ہے. 1011 01:03:38,610 --> 01:03:44,230 [Binky] یہ وہی ہے جو کوڈ کی طرح لگتا ہے. میں نے صرف تعداد مقرر کریں گے ... [آواز پوپ آؤٹ ہیں] 1012 01:03:44,230 --> 01:03:46,100 [لڑکا اسپیکر] ارے، دیکھو، وہاں جاتا ہے. 1013 01:03:46,100 --> 01:03:50,990 تو X پر dereference کر تیر اس pointee تک رسائی حاصل کرنے کے مندرجہ ذیل، 1014 01:03:50,990 --> 01:03:53,230 وہاں میں اس معاملے میں 42 سٹور. 1015 01:03:53,230 --> 01:03:57,630 ہے، اس کا استعمال کرتے ہوئے دوسرے پوائنٹر، Y کے ذریعے 13 نمبر جمع کرنے کی کوشش کریں. 1016 01:03:57,630 --> 01:04:03,250 [Binky] ٹھیک ہے. میں صرف یہاں Y جاؤ اور 13 نمبر قائم کریں گے 1017 01:04:03,250 --> 01:04:08,360 اور تو اور صرف محولہ لقب ضبطی کے چھڑی لے ... [بنبنا آواز] واہ! 1018 01:04:08,360 --> 01:04:10,980 [لڑکا اسپیکر] اوہ، ارے، یہ کام نہیں کیا. 1019 01:04:10,980 --> 01:04:14,870 >> ، Binky کا کہنا ہے کہ میرے خیال میں، نہیں Y محولہ لقب ضبطی ایک اچھا خیال ہے 1020 01:04:14,870 --> 01:04:17,880 کیونکہ pointee قائم کرنے میں ایک علیحدہ قدم ہے 1021 01:04:17,880 --> 01:04:19,850 مجھے نہیں لگتا کہ ہم نے کبھی بھی اس نے کیا کیا. 1022 01:04:19,850 --> 01:04:21,770 [Binky] ہمم، اچھی بات ہے. 1023 01:04:21,770 --> 01:04:26,640 [لڑکا اسپیکر] جی ہاں. ہم پوائنٹر Y مختص لیکن ہم نے اسے قائم کبھی بھی ایک pointee کی طرف اشارہ ہے. 1024 01:04:26,640 --> 01:04:28,780 [Binky] ہم، بہت اچھا مشاہدہ ہے. 1025 01:04:28,780 --> 01:04:30,690 [لڑکا اسپیکر] ارے، آپ کو اچھی وہاں تلاش کر رہے ہیں، Binky. 1026 01:04:30,690 --> 01:04:34,160 یہ آپ تاکہ ایکس کے طور پر ایک ہی pointee Y پوائنٹس ٹھیک کر سکتے ہیں >> [Binky] ضرور. 1027 01:04:34,160 --> 01:04:37,100 میں اپنے پوائنٹر تفویض کی جادو کی چھڑی کا استعمال کریں گے. 1028 01:04:37,100 --> 01:04:39,070 [لڑکا اسپیکر] ہے کہ پہلے کی طرح ایک مسئلہ ہونے جا رہا ہے؟ 1029 01:04:39,070 --> 01:04:40,840 [Binky] نہیں، یہ pointees چھو نہیں ہے. 1030 01:04:40,840 --> 01:04:44,780 یہ صرف ایک پوائنٹر تبدیل، ایک دوسرے کے طور پر ایک ہی بات کی طرف اشارہ ہے. [آواز پوپ آؤٹ ہیں] 1031 01:04:44,780 --> 01:04:48,570 [لڑکا اسپیکر] اوہ، میں دیکھ رہا ہوں. اب X کے طور پر ایک ہی جگہ پر Y پوائنٹس. 1032 01:04:48,570 --> 01:04:51,140 تو انتظار کریں. اب Y طے ہو گئی ہے. یہ ایک pointee ہے. 1033 01:04:51,140 --> 01:04:54,520 تو آپ پھر محولہ لقب ضبطی 13 بھیجنے کے چھڑی کرنے کی کوشش کر سکتے ہیں. 1034 01:04:54,520 --> 01:04:58,130 [Binky] اوہ، ٹھیک ہے. یہاں جاتا ہے. [آواز پوپ آؤٹ ہیں] 1035 01:04:58,130 --> 01:05:01,250 [لڑکا اسپیکر] ارے، اس کو دیکھو. اب Y پر کام محولہ لقب ضبطی. 1036 01:05:01,250 --> 01:05:05,200 اور اس وجہ سے اشارہ ہے کہ ایک pointee اشتراک کر رہے ہیں، وہ دونوں 13 دیکھیں. 1037 01:05:05,200 --> 01:05:06,910 [Binky] جی ہاں، اشتراک. جو بھی ہے. 1038 01:05:06,910 --> 01:05:08,880 >> تو کیا اب ہم مقامات پر تبدیل کرنے جا رہے ہیں؟ 1039 01:05:08,880 --> 01:05:11,420 [لڑکا اسپیکر] ارے دیکھو، ہم وقت سے باہر ہیں. >> [] Binky لیکن - 1040 01:05:11,420 --> 01:05:13,880 [لڑکا اسپیکر] 3 پوائنٹر قوانین یاد ہے. 1041 01:05:13,880 --> 01:05:18,630 نمبر 1، بنیادی ڈھانچے یہ ہے کہ آپ کو ایک پوائنٹر ہے اور یہ pointee اشارہ. 1042 01:05:18,630 --> 01:05:23,120 لیکن پوائنٹر اور pointee الگ الگ ہیں، اور عام غلطی پوائنٹر قائم کرنے 1043 01:05:23,120 --> 01:05:25,680 لیکن یہ ایک pointee دینے کو بھولنا. 1044 01:05:25,680 --> 01:05:29,580 نمبر 2، پوئینٹر محولہ لقب ضبطی پوائنٹر شروع ہوتا ہے اور اس سے زیادہ اس کا تیر مندرجہ ذیل 1045 01:05:29,580 --> 01:05:31,060 اس pointee تک رسائی حاصل کرنے کے لئے. 1046 01:05:31,060 --> 01:05:34,340 جیسا کہ ہم جانتے ہیں کہ یہ تمام کام صرف کام کرتا ہے اگر وہاں ایک pointee ہے، 1047 01:05:34,340 --> 01:05:36,460 جس قسم کے واپس ہو جاتا ہے نمبر 1 پر راج ہے. 1048 01:05:36,460 --> 01:05:39,870 نمبر 3، پوئینٹر تفویض ایک پوائنٹر لیتا ہے اور اسے تبدیل 1049 01:05:39,870 --> 01:05:42,390 دوسرے پوائنٹر کے طور پر ایک ہی pointee کی طرف اشارہ ہے. 1050 01:05:42,390 --> 01:05:45,890 تو، 2 اشارہ تفویض کے بعد اسی pointee کی طرف اشارہ کریں گے. 1051 01:05:45,890 --> 01:05:47,800 کبھی کبھی بھی اشتراک کہا جاتا ہے. 1052 01:05:47,800 --> 01:05:50,910 >> اور یہ کہ اس واقعی ہے. الوداع. 1053 01:05:50,910 --> 01:05:55,840 یہ Binky ہے. یہ CS50 ہے. ہم اگلے ہفتے آپ کو نظر آئے گا. [تعریف] 1054 01:05:55,840 --> 01:05:59,000 >> [CS50.TV]