[موسیقی بجانے] ڈیوڈ جے MALAN: ٹھیک ہے اس CS50 ہے اور اس ہفتے کے پانچ کے آغاز ہے. آج تو، آپ کی سیٹ تکیی کے نیچے، آپ کو کچھ نہیں ملے گا. لیکن اوپر، آپ کو، ان کو تلاش کرنا چاہئے کے لئے ہماری تعریف بہت کم ٹوکن آپ کو اس کام کے تمام پندرہ برس کی کھیل ہی کھیل میں. بس پر چھوٹی سی کے دائرے کو ہٹا دیں کھیلنے کے لئے شروع کرنے کے لئے نیچے دیے گئے کلاس کے باقی. تاکہ یاد، یا قائم ہے کہ مسئلہ معلوم اس ہفتے کے آخر میں باہر گیا تھا جس میں چار،، ایک کھیل لکھنے شامل ہیں. لیکن یہ شامل ہے اس وقت ایک کا استعمال کرتے ہوئے اصل گرافیکل یوزر انٹرفیس، نہیں جیسے ٹیکسٹ انٹرفیس پندرہ کا کھیل تھا. اور تیرے آگے آگے جھوٹ ہے کہ کھیل، آپ ابھی تک اس کے اگلے نہیں دیکھا ہے تو، اس طرح ایک چھوٹا سا کچھ لگتا ہے. میں اپنے ٹرمینل میں جانے کے لئے جا رہا ہوں یہاں GDB میں ونڈو. اور میں آگے بڑھو اور چلانے کے لئے جا رہا ہوں آپ تک رسائی حاصل کر سکتے ہیں جس میں عملے کے حل، معمول کے مطابق اپ ڈیٹ 50 چلانے کے بعد. لیکن میں نے ایک چھوٹی سی میں ڈال کرنے کے لئے جا رہا ہوں خفیہ موڈ، ایک چھوٹی سی ایسٹر انڈے، کی طرف سے، خدا نے موڈ نام نہاد argv1 میں خدا ڈال. اور میں، میری خود کی ہدایات پر عمل کرنے کی ضرورت میری خود میں یہ چل رہا ہے مسئلہ ڈائریکٹری قائم کی. تو اب آپ کو ایک مکمل ورژن دیکھ بریکآؤٹ کے کھیل کے. اصل میں، یہ کوئی ہاتھ موڈ ہے. تو یہ اصل میں ہے - اگرچہ wowed آپ ہو سکتا ہے - میں خدا کے موڈ کو لاگو کرنے کے خوبصورت چھوٹی سی بریکآؤٹ، پندرہ کے کھیل کے برعکس، جس سے آپ میں سے کچھ حل ہو سکتا ہیکر ایڈیشن کے لئے. بریکآؤٹ میں یہ خدا میں کافی ہے موڈ صرف، کیا کروں intuitively پیڈل کے ساتھ؟ بس جو کچھ بھی اسے برابر بنا افقی پوزیشن گیند ہے. اور جب تک کہ آپ lockstep میں ایسا کرنے کے طور پر اس کھیل کو منتقل گیند گے کے ساتھ ، کبھی، کبھی گیند کو کبھی نہیں چھوڑتا اور آپ کو ہر بار جیت جائے گا. لیکن اس ہفتے کے ہیکر ایڈیشن میں صرف خدا کے موڈ کے مقابلے میں زیادہ ہے. دیگر خصوصیات کی ایک بڑی تعداد ہے. ان میں، lasers. تاکہ تم واقعی میں آپ کو بے چین ملے تو اینٹوں کے نیچے کی شوٹنگ شروع کر سکتے ہیں اور چند دوسروں. اور کرنا چاہوں گا جنہوں نے تم میں سے ان لوگوں کے لئے معیاری بمقابلہ ہیکر مدرج ایڈیشن، میں دیکھ سکتا کہ اس ہفتے کی ہیکر ایڈیشن جان بوجھ کر ایک خدا کے بجائے، کا کہنا ہے کہ تھوڑا زیادہ ممکن موڈ پندرہ کے کھیل کے ساتھ تھا. آپ کو ایک مسلسل کے لئے تلاش کر رہے ہیں اور اگر ایسا ہے تو آپ کو کچھ اضافی تفریح ​​کے لئے تلاش کر رہے ہیں خصوصیات دلچسپی کے اگر میں ڈوبکی کرتے ہیں. اب عملی طور پر، میری طرف اشارہ کرتے ہیں ایک بات باہر کے ساتھ ساتھ. تم میں سے بعض ابھی تک نہیں کر سکتے جس GDB، ٹھیک ہے، جو ذاتی طور پر کو چھو لیا. لیکن اب سچ میں استعمال کیا جاتا ہے کرنے کے لئے وقت ہو گیا ہے اس آلے کے ساتھ اس اور آرام دہ اور پرسکون کرنے کے لئے یہ آپ کی زندگی بنا دے گی کیونکہ بہت آسان، واقعی. GDB ایک جوڑے پر روب کے اس لیکچر سے فی ہفتے کے پہلے، یاد کہ GDB ایک debugger ہے. یہ آپ کو چلانے کے لئے اجازت دیتا ہے کہ ایک آلہ ہے آپ کی پروگرام لیکن یہ قدم، لائن کی طرف سے چلانے کے قدم لائن کی طرف سے، تا کہ آپ کے ارد گرد کے پرہار کر سکتے ہیں آپ چیزوں کو دیکھ رہا، تا کہ تو آپ کو باہر پرنٹ کر سکتے ہیں کہ متغیر کی اقدار. مختصر میں، یہ آپ اتنا زیادہ دیتا ہے printDef سے زیادہ طاقت ہے. اب اس کا اقرار انٹرفیس خوبصورت arcane ہے. سیاہ اور سفید متن کے انٹرفیس سب سے زیادہ حصہ کے لئے. حکم دیتا ہے کسی حد تک سخت ہیں پہلی نظر میں یہ یاد رکھنا. لیکن یہ آپ نے نصف لے سکتے ہیں اگرچہ ایک گھنٹہ، ایک گھنٹہ، کہ براہ راست ڈال اس میں وقت کی سرمایہ کاری، میرا یقین کرو. یقینی طور پر سمسٹر کے اختتام کی طرف سے بچا لے گا زیادہ شدت کے آپ کو ایک حکم اس سے بھی زیادہ وقت. رکنیت ہفتے ڈوبکی اتنی جلدی اور بریکآؤٹ کی شرائط میں، جانتے ہیں کہ آپ آپ کے طور پر اتنے لمبے وقت تک ایسا کر سکتے ہیں تقسیم کوڈ یا اپنا خود کا کوڈ آپ Pst4 ڈائریکٹری میں ترقی میں. آپ gdb چلا سکتے ہیں جانتے ہیں کہ. / بریکآؤٹ. اس کو کھولنے کے لئے جا رہی ہے اس طرح ایک کھڑکی. مجھے خود زیادہ دے دو ایک ٹرمینل ونڈو کے. اور پھر کیا میں آگے جانے کے لئے جا رہا ہوں اور کرتے ہیں، یہ صرف اس کا حصہ نہیں ہے. میں نے سب سے پہلے ایک وقفے پوائنٹ قائم کرنے کے لئے جا رہا ہوں آپ کو روکنے کی اجازت دیتا ہے جس کی یاد، کسی خاص جگہ پر پھانسی. بس میں جا رہا ہوں چیزوں کو آسان رکھنے کے لئے ٹائپ کرکے صرف ایک لائن کو توڑنے کے لئے نمبر ایک. مجھے اصل میں اس ونڈو کو دوبارہ کھول دیں یہ ہو رہا ہے کیونکہ وہاں چھوٹی چھوٹی. تو کیا اب میں یہاں کیا کرنے جا رہا ہوں میں اپنے ٹرمنل ونڈو کھولنے اگر. وہاں ہم چلو، جاؤ. میں ڈراپ باکس، Pst4 واپس جانا تو اب تو اور gdb چلائیں. / بریکآؤٹ داخل کریں، نوٹس میں ایک قائم کرنے کے لئے کو توڑنے کے لئے جا رہا ہوں ایک لائن میں ایک وقفے کے نقطہ. اور اب میں جا رہا ہوں آگے اور قسم چلائیں. اور میں کرتے ہیں، جب کچھ بھی نہیں محسوس ہونے لگتا ہے. کوئی پاپ اپ نہیں ہے. کوئی گرافیکل ہے ابھی یوزر انٹرفیس. میں ہوں کیونکہ لیکن یہ سمجھ میں آتی ہے لفظی اپنے پروگرام میں ایک لائن میں. اور، میں تیزی سے آگے بڑھایا ہے کہ نوٹس خاص طور پر اب 62، سب اس کی وجہ اس فائل میں سب سے اوپر چیزیں ہے تبصرے اور constants کی طرح چیزوں اور اب کے لئے چیزیں uninteresting. تو اب میں، مرکزی کے اندر ہوں یہ لائن 62 پر، لگتا ہے. اور یہ تو صرف تقسیم ہے کوڈ، یاد کرتے ہیں. میں، اسی طرح جا کر اس کو کھولنے تو میرے ڈراپ باکس ڈائریکٹری Pst4 میں میں، breakout.c میں. اور میں نیچے اور نیچے ذیل میں سکرال اور اگر، اور میرے آگے بڑھو اور پر تبدیل کرتے ہیں میری لائن نمبرز. میں ذیل میں سکرال میں نظر آئے گا کیا، اگر لائن 62، بالکل لائن ہے ہم پر روک دیا گیا ہے. یہ لکیر یہاں، 62، ہے ہم کرنے والے ہیں جہاں. تو اب GDB میں، میں آگے بڑھو اور اگر ٹائپ کریں اب اگلا، دوسرا، یہ جا رہا ہے میں داخل اس لائن کو پھانسی. اور voila، ہم ہیں G ونڈو نام نہاد. کیا GWindow سے نا واقف ہیں تو فکر کرنے کی ضرورت نہیں ہے. رپورٹ کے طور پر، اس کے لئے آپ کو متعارف کرائے گا ساتھ ساتھ واک تھرو ویڈیوز کی ایک بڑی تعداد کے طور پر رپورٹ میں سرایت. لیکن اب کی یہ کرنے دو تھوڑا سا زیادہ دلچسپ. مجھے اس ونڈو کے اوپر منتقل کرتے ہیں طرف تھوڑا سا. مجھے ایک چھوٹی سی ونڈو کرنے دو بڑا تو میں زیادہ دیکھ سکتے ہیں. اور اب مجھے آگے جانے دو اور پھر اگلے کرتے ہیں. اور میری اینٹوں ہیں. میں اگلے دوبارہ ٹائپ کریں تو اب میں گیند کو دیکھتے ہیں. اور میں اگلے دوبارہ ٹائپ کریں تو اب میں پیڈل دیکھتے ہیں. اور خوش قسمتی سے اس gedit نہیں ہے سچ میں مجھے دکھا کر تعاون میں چاہتا ہوں سب کچھ. لیکن اب مجھے اگلے دوبارہ کرتے ہیں تو، اگلے ایک بار پھر، میں صرف ہوں کچھ متغیر کا اعلان. اور میں کسی ایک پرنٹ کر سکتے ہیں باہر ان لوگوں کے. پرنٹ اینٹوں، پرنٹس زندگی. اور اب میں کرتے رہیں تو اگلے، میں ہو جائے گا کہ متعلقہ کہ لوپ کے اندر. لیکن کوڈ کو پھانسی کی جا رہی ہے میں توقع بالکل کے طور پر. تو میں نے اس تقریب مارا جب، انتظار کریں کلک کے لئے، ایسا کرنے والا ہے اس کے لفظی ہیں. تو میں نے کنٹرول کھو دیا ہے لگ رہا تھا پروگرام پر. GDB مجھے ایک اور فوری طور پر نہیں دے رہا ہے. لیکن فکر نہ کریں. میرے کھیل کو دیکھیے، کہیں پر کلک کریں. اور voila، اب یہ لائن 86 پر آمدنی. تو پھر، یہ، بالآخر، انمول ہے ٹھیک مسائل کے لئے. آپ لفظی کے ذریعے قدم کر سکتے ہیں کیونکہ اپنے کوڈ کو پرنٹ اور بہت کچھ چیزیں، بہت، زیادہ. اکیلے لیکن اب کے لئے، ان، فورم کے اوزار خوبصورت ابھی تک آپ کو ہو جانا چاہئے. تو ہم نے ایک نظر لے، کورس کے، ہو میں اب گرافکس، اچانک. اور اب ہماری دنیا ایک چھوٹا سا ہو جاتا ہے زیادہ دلچسپ. اور تم میں سے کچھ کی طرف سے، شاید جانتے ہیں، ہم ان ہے کہ آن لائن ویڈیوز آپ دیکھ رہے ہیں کہ شارٹس مسئلہ سیٹ کے ایک حصے کے کے طور پر. اور وہ جان بوجھ کر، گولی مار کر ہلاک کر دیا گیا ہے ایک سفید پس منظر کے خلاف. اور ان میں سے بعض درس و تدریس ہے پر کچھ متن ڈرائنگ فیلو مڑھا ہے کہ سکرین ان کی طرف. لیکن کورس کے، یہ سب نہیں ہے حقیقی دنیا میں دلچسپ. یہ ایک کے ساتھ صرف ایک لیکچر ہال ہے بڑا سفید سکرین اور ایک پس منظر. اور ہماری حیرت انگیز پروڈکشن ٹیم ترتیب دیں سب کچھ خوبصورت نظر دیتا ہے کی باہر فسل کی طرف سے حقیقت کے بعد یا کچھ overlaying ہم کرتے ہیں یا نہیں کرنا چاہتے. اب ذرا اس ہفتے حوصلہ افزائی اور سچ میں، آپ کو، بالآخر، جا سکتے ہیں جہاں کمپیوٹر سائنس کے ساتھ. نہ صرف مسئلہ کے بعد چار قائم کی. لیکن ایک اور کورس یا ایک پورے کے بعد نصاب حیرت انگیز ہے کہ کیا آپ کر سکتے ہیں کی شرائط میں ان دنوں کرنا خاص طور پر گرافکس. تم میں سے کچھ اس نے دیکھا ہے ہو سکتا ہے آن لائن کے ارد گرد بہہ. لیکن میں نے کے لئے، میں تمہیں دکھاتا سوچا تھا کہ صرف ایک منٹ کے جوڑے، کیا کی ایک جھلک کمپیوٹر ٹیکنالوجی اور کیا CGI، کمپیوٹر گرافکس ان دنوں کر سکتے ہیں ایک شناسا گیت کے ساتھ اور شاید فلم. [موسیقی - LANA ڈیل رے، "جوان اور خوبصورت] اسپیکر 1: یہ صرف تھوڑا سا ہے حیرت انگیز، شاید، صرف کس طرح ہر طرف موجود - [تالیاں] اسپیکر 1: میں صرف یہ ڈاؤن لوڈ. لیکن یہ مجھے لگتا ہے، واقعی حیرت انگیز ہے صرف ہر طرف موجود سافٹ ویئر اور کوڈ اور کس طرح اس طرح کے اوزار واقعی ہیں. تو اس سمت کا ایک ذائقہ ہے جس میں آپ جا سکتے ہیں. اوہ، نہیں آلات آج. خیر، یہ اصل میں المناک وقت ہے میں صرف بنانے کی کوشش نقطہ دیا. ٹھیک ہے، تو شروع کرتے ہیں فیوژن دوبارہ. مجھے بعد میں یاد دہانی کرائیں. ٹھیک ہے، اور آپ کو ایک مل گیا ہے چاہئے اگر آپ کو حاصل کیا تو ایک ایک طرف کے طور پر ای میل کریں اس طرح محسوس. ٹھیک ہے، تو ہے کہ گزشتہ ہفتے یاد ہم واپس اس چھیل کرنا شروع کر دیا بعد میں سٹرنگ کے طور پر جانا جاتا ہے. سٹرنگ ہے کہ اعداد و شمار کی قسم یاد کرتے ہیں CS50 لائبریری میں اعلان کر دیا. اور یہ تربیت پہیوں کا حصہ ہے کہ اب اتار شروع ہو جائیں گے. یہ جلد پر ایک مفید تصور تھا. لیکن اب یہ زیادہ حاصل کرنے کے لئے جا رہا ہے دلچسپ اور پر زیادہ طاقتور اصل میں، ہڈ کے نیچے دیکھتے ہیں کہ ایک تار صرف کیا ہے، ہم نے کہا تھا؟ جی ہاں، تو یہ ایک نام نہاد چار * ہے. اور وہاں * کہ وہاں پر کرنا ایڈریس کسی طرح ملوث ہے. اور اس لئے تم چار * کا کہنا ہے کہ جب آپ کو صرف مطلب جن کے اعداد و شمار کی قسم ایک متغیر ہے اب پوائنٹر. وہاں ستارہ ہے حقیقت یہ ہے کہ صرف آپ کو ایک اعلان کر رہے ہیں کا مطلب ہے کہ پوائنٹر نام نہاد. اور یہ کہ پوائنٹر بظاہر جا رہا ہے کے، کا پتہ ذخیرہ کورس کے، ایک چار. اب کیوں اس معنی پڑتا ہے؟ ویسے، ایک تار کیا ہے ہڈ کے نیچے؟ ٹھیک ہے، کچھ وقت کے لیے ہم کہہ رہے ہو ہڈ کے نیچے ایک سٹرنگ ہے صرف H-ای L-L-O، مثال کے طور پر. لیکن ہم اس کے بارے میں بات کی ہے ، بنیادی طور پر، ایک سرنی کیا جا رہا ہے. اور ایک سرنی پھر تھوڑا نظر آئے گا ان میں سے ہر ایک کے ساتھ، اس طرح زیادہ ایک ٹکڑا اٹھا رہا. اور پھر ہم وہاں نے کہا کہ ہے واپس یہاں کچھ خاص ہے، الٹا سلیش 0، یا شہوت انگیز null ٹرمنیٹر. یہ سب وقت تو، یہ یہاں ایک تار دیا گیا ہے. لیکن واقعی، ایک تار ہے اصل میں ایک ایڈریس. ہم دیکھیں گے کے طور پر اور پتے،، اکثر ہیں کنونشن کی طرف سے 0x ساتھ prefixed. 0x کیا ظاہر کرتا ہے؟ کسی کو معلوم ہے؟ تو یہ صرف شش اعشاری کا مطلب ہے. تو کیا تم PST سے، اصل میں، یاد کر سکتے ہیں 1، مجھے یقین ہے کہ وارم اپ میں سے ایک سوالات کے اصل کے بارے میں پوچھا کے علاوہ میں شش اعشاری سنکیتن بائنری اور دشملو. اور یہاں پر حوصلہ افزائی ہے کہ شش اعشاری کے ساتھ آپ کو 16 ہے آپ کو ضائع کرنے میں ہندسوں. 0، 1، 2، 3، 4، 5، 6، 7، 8، 9، کی پیروی کی ایک کی طرف سے، بی، سی، ڈی، ای، چ. اور تم ان سب کو شمار تو، اگر آپ 16 کی کل ملتا ہے. تو اس کے ساتھ اس کے برعکس میں ہے ہم 10 ہے جہاں دشملو، ہندسے، نو کے ذریعے 0. یہ بائنری کے ساتھ اس کے برعکس میں ہے ہم صرف 0 اور 1 ہے جہاں. لیکن آپ کو صرف یہ کر سکتے ہیں دن کے آخر میں اسی تعداد کی نمائندگی کرتے ہیں، لیکن کسی حد تک مختلف. اور شش اعشاری عام ہے کے طور پر کی وجہ سے یہ باہر کر دیتا ہے - اور ہم اس نظر آئے گا بعد میں کورس میں - اس وقت بھی جب ہم ملے کے تناظر میں ویب پروگرامنگ کے لئے ایچ ٹی ایم ایل اور رنگ کوڈ، شش اعشاری اچھا ہے. ہر عددی کیونکہ،، باہر کر دیتا ہے بالکل چار بٹیں کی نمائندگی کرتا ہے. اچھی طرح لائنوں کی تو یہ صرف قسم کو ہم آخر میں نظر آئے گا کے طور پر. تو یہ ہو سکتا ہے Ox123 یا کچھ اور اس طرح، denoting ایڈریس 123 اندر کہیں میرا کی کے کمپیوٹر کی میموری. لیکن کورس کے، کچھ مسائل پیدا کیونکہ اس کی بنیادی عمل. اور میں نے ایک کوشش لیا کہ یاد اس طرح کی ایک تقریب پر عمل درآمد - گزشتہ ہفتے ڈیش 0 ڈاٹ سی کا آپس میں موازنہ، کہ یہ تھا جیسے اسے دیکھا اگرچہ درست ہے، یہ صرف آپس میں موازنہ نہیں کیا دو ڈور درست طریقے سے. میں دور اہم پھینک دیا ہے، اور میں پھینک دیا ہے دور تبصرے بس پر میں توجہ مرکوز کرنے کی یہاں دلچسپی کا باعث ہے کہ کوڈ. یہ چھوٹی گاڑی ہے کیونکہ اور یہ سرخ رنگ میں ہے. کس وجہ سے؟ ٹھیک ہے، وہاں سب سے اوپر میں اعلان کر دیا جب ایک تار، کیا واقعی پر جا رہی تھی ہڈ کے نیچے؟ ٹھیک ہے، مجھ سے زیادہ چلتے ہیں یہاں سکرین اور کہ اپنی طرف متوجہ. تو میں نے، پھر، کا اعلان کر دیا سٹرنگ ایس GetString. تو اب میں آگے جانے والے اور رہا ہوں یہ واقعی میں کیا ہے کے لئے اپنی طرف متوجہ کی. یہاں ایک مربع ہونے جا رہا ہے. اور میں دعوی کرنے جا رہا ہوں کہ 32 بٹیں ہے. کم از کم یہ عام طور پر ہے، کم از کم CS50 پر کمپیوٹر کی ایک بہت میں آلات. میں نے اس کے فون کرنے کے لئے جا رہا ہوں. لیکن اب یاد ہے کہ ہم GetString ملاقات کی. تو GetString کی واپسی، کورس کے، ایک تار. H-ای L-L-O میں صارف کی اقسام درج کرتے ہیں سٹرنگ خوش واپس آ جاتا ہے. اور اس سٹرنگ، ہم صرف کا کہنا ہے کہ کے طور پر، ختم ہو جاتی ہے اپ کہیں آپ کے کمپیوٹر کی میموری میں آخر میں ایک الٹا سلیش 0 کے ساتھ. میں سرنی کی طرح اس طرف متوجہ ہوں گے - یا حروف کی ملحق بلاک - یہ اصل میں ہے. اور اب، کیا GetString ہے اصل میں آرہے ہیں؟ کیا واپس آ گیا GetString ہے اس وقت کے تمام؟ ٹھیک ہے، ہم پہلے ہفتوں میں، کا کہنا ہے کہ، یہ ایک سٹرنگ واپس. لیکن تکنیکی طور پر، یہ کیا کرتا ہے بظاہر واپسی GetString؟ سامعین: ایک ایڈریس. اسپیکر 1: ایک ایڈریس. خاص طور پر اس کا ایڈریس واپس جو بھی ہے بہت پہلے کاٹنے،. مجھے صرف ایک، دو، تین کا استعمال جاری رکھ یہ آسان ہے کیونکہ. یہ سب سے پہلے ایڈریس واپس سٹرنگ میں کردار. اور ہم نے پچھلے ہفتے کہا تھا کہ کہ کافی ہے. ہم ہمیشہ یہ پتہ لگا سکتے ہیں کیونکہ جہاں سٹرنگ کے اختتام پر صرف کی طرف سے ایک کے ساتھ، شاید، یہ ختم iterating لوپ یا کی طرح ایک جبکہ لوپ یا کچھ اور کہ، صرف "الٹا سلیش 0" کے لئے تلاش کر، خصوصی پرہری کردار. اور پھر ہم جانتے ہیں کہ سٹرنگ لمبائی کا ہو - اس معاملے میں - پانچ. لہذا تکنیکی طور پر GetString کیا کرتا ہے اورایسی حالت میں اس Ox123 واپس ہے. اور تکنیکی طور پر اس کے بعد کیا ہوتا ہے کہ ہم، S کے اندر، Ox123 سٹور. دن کے اختتام پر، یہ بھی اگرچہ نئے تصور، اشارہ، وہ ہو جاتا ہے صرف متغیر. لیکن وہ بٹس ذخیرہ کرنے کے لئے ہو کہ مجموعی طور پر ایک ایڈریس کی نمائندگی کرتے ہیں. لہذا تکنیکی طور پر تمام وہ ہو جاتا ہے ے میں ذخیرہ Ox123 ہے. انسانوں کے طور پر لیکن ہم - آج مستقبل میں بھی شامل ہے - واقعی میں، عام طور پر، اس کی پرواہ نہیں جا رہے ہیں اصل ایڈریس کیا ہے میموری میں سے کچھ حصہ کے. یہ صرف تفصیل سے کم سطح پر ہے ذہنی دلچسپ ہو. تو میں نے اس کو رد کرنے کے لئے جا رہا ہوں. اور اس کے بجائے، زیادہ اعلی درجے کے، صرف کا کہنا ہے کہ کہ ہم اشارہ کے بارے میں بات کر رہے ہیں جب میں صرف زیادہ سے زیادہ اپنی طرف متوجہ کرنے کے لئے جا رہا ہوں بتا کہ صارف دوست تیر اسی خیال اور دور خلاصہ اصل کیا تفصیلات بنیادی ایڈریس ہے. ہم کوڈ کے لئے واپس جانا اب تو، کیا ہم سٹرنگ T ہے تو گزشتہ ہفتے ہوا GetString برابر ہے؟ ہیلو میں ٹھیک ہے، میں ایک بار پھر، اگر قسم میں حاصل کرنے کے لئے جا رہا ہوں اس وقت میموری کا ایک حصہ. H-ای L-L-O الٹا سلیش 0. لیکن میں GetString بلایا کیونکہ ایک دوسری بار - اور میں دیکھ کر کی طرف سے یہ پتہ GetString کے لئے ماخذ کوڈ - یہاں تک کہ یہ خوش تھا کہ اتفاقیہ ہے اگرچہ دو بار میں ٹائپ، GetString نہیں ہے بہتر کرنے کے لئے کوشش کرنے کے لئے جا اور ہوشیار ہو. یہ صرف کا ایک ٹکڑا حاصل کرنے کے لئے جا رہا ہے ہے جو کمپیوٹر سے میموری کسی دوسرے پتے پر ہونے جا رہا. منمانے صرف 456 کا کہنا ہے کہ چلو. اور پھر کیا اس کو واپس جا رہا ہے؟ یہ 456 واپس جا رہا ہے اور ٹی میں سٹور. تو کیا واقعی پر، چل رہا ہے بائیں جانب میں ایک حصہ ہے ہے میموری کی، 32 بٹیں عام طور پر. اور وہاں میں Ox456 جانے کے لئے جا رہی ہے. لیکن پھر میں نے ان میں کوئی دلچسپی نہیں اب خاص طور پر تعداد. میں صرف abstractly کرنے جا رہا ہوں ایک تیر کے طور پر اپنی طرف متوجہ. تو یہ اب ایک نئی وضاحت ہے. لیکن یہ ہے کہ ایک ہی عین مطابق خیال ہے اس وقت جو کچھ ہو رہا کر دیا گیا. اور اس کی وجہ سے، تو اس پہلی کا آپس میں موازنہ کے ورژن چھوٹی گاڑی تھی گزشتہ ہفتے کیوں ہے؟ ے برابر برابر ہے تو آپ کب اگر آپ واقعی کیا ہیں T ہڈ کے نیچے کا موازنہ؟ آپ پتوں کا موازنہ کر رہے ہیں. اور صرف intuitively، واضح طور پر، Ox123 برابر Ox456 کرنے کے لئے نہیں جا رہا ہے. ان لوگوں کی تعداد، ان کی بٹس صرف مختلف ہیں. اور اس طرح مسلسل، گزشتہ ہفتے یہ کہا آپ کو مختلف چیزیں ٹائپ کریں تو بھی الفاظ لفظ بہ لفظ وہی تھے. تو ہم اس کو ٹھیک. عام آدمی کی شرائط میں، حل کیا تھا؟ سامعین: ایک تقریب کا استعمال کریں. اسپیکر 1: ایک تقریب کا استعمال کریں. یا ستاروں کو یقینی طور پر ملوث ہیں، لیکن کیا کروں ایک تقریب کا استعمال کرتے ہیں؟ سامعین: ڈور کا آپس میں موازنہ کرنے کے لئے. اسپیکر 1: ڈور کا آپس میں موازنہ کرنے کے لئے. تو یہاں بنیادی مسئلہ تھا میں نے صرف غور کیا گیا تھا کی طرف سے وضاحت کی جائے ڈور کے معیار ان کے پتوں کی موازنہ. اور ظاہر ہے کہ اب ایک بار صرف گونگا ہے آپ کو کیا ہو رہا ہے سمجھ ہڈ کے نیچے. صحیح معنوں میں دیکھنے کے لئے ڈور کا آپس میں موازنہ اگر وہ ایک انسان راہ میں برابر ہیں دو تار برابر ہو پر غور کرے گا کے لئے ہم ان کے کردار کا آپس میں موازنہ کرنے کی ضرورت ہے کردار کے لئے کردار. اب میں کیا کر سکتا ہے یہ بہت tediously. لیکن familiarly، ہم ہیں لوپ کے لئے ایک کا استعمال کرتے ہوئے. اور بس کے بریکٹ کا موازنہ T بریکٹ میں خلاف میں. T بریکٹ کے خلاف کی بریکٹ میں پلس 1 میں پلس 1، اور تو آگے کے اندر لوپ کسی قسم کا. اور میں اس کے کسی بھی دو حروف بتا تو مختلف، یا میں اہ احساس ہے کہ اگر، S ہے T T سے زیادہ کے مقابلے میں کم یا زیادہ میں نے فوری طور پر، جھوٹی کہہ سکتے ہیں وہ ایک ہی نہیں ہو. لیکن میں ے اور ٹی کے ذریعے حاصل اور کہتے ہیں اگر کی ایک ہی ہے، وہی، وہی، وہی، وہی، آخر دونوں ڈور، میں کہہ سکتا ہوں سچ، وہ برابر ہیں. ٹھیک ہے، شکر ہے کہ سال پہلے کسی کو ہمارے لئے کہ کوڈ لکھا. اور وہ اس StrComp کہا جاتا ہے سٹرنگ کا آپس میں موازنہ کرنے کے لئے. اور یہ ایک چھوٹا سا کاؤنٹر ہے اگرچہ ان لوگوں کو تو بدیہی، StrComp 0 واپس دو ڈور، S اور ٹی ایک جیسے ہیں. لیکن یہ منفی قیمت واپس اگر ے یا T ترتیب حروف تہجی سے پہلے آنا چاہئے اسے آنا چاہئے اگر مثبت قیمت T ترتیب حروف تہجی کے بعد. کیا تم نے کبھی کچھ حل کرنا چاہتے ہیں اگر ایسا ہے تو یہ StrComp مفید ہے کہ باہر کر دیتا ہے. یہ صرف کا کہنا ہے کہ نہیں ہے کیونکہ کوئی یا جی ہاں، برابر یا نہیں. یہ آپ کے حکم کا احساس دیتا ہے ایک ڈکشنری طاقت پسند ہے. StrComp تو، S کوما T برابر 0 برابر کا مطلب ہے کہ ڈور صحیح معنوں میں برابر ہیں. لھذا جس نے بھی اس تقریب لکھا کیونکہ سال پہلے شاید لوپ کے لئے استعمال کیا جاتا ہے اس طرح یا ایک جبکہ لوپ یا کچھ اور پھر حروف سے زیادہ ضم اور بار بار. لیکن مسئلہ یہ دونوں یہاں کیا جانے لگا. یہ copy0.c تھا. اور سرخ میں دو ہے یہ غلط ہے کیونکہ. اور ہم یہاں کیا کیا؟ ٹھیک ہے، سب سے پہلے میں GetString ملاقات کی. اور میں ایس میں واپسی قیمت ذخیرہ. تاکہ بہت زیادہ طور پر ایک ہی ہے تصویر کے اس سب سے اوپر حصہ ہے. لیکن اس کے بعد کیا آتا ہے؟ ٹھیک ہے، مجھے آگے بڑھو اور چھٹکارا حاصل کرتے ہیں اس کے پورے گچرچھی کی. ہم کہاں ہم صرف کے لئے وقت میں لپیٹیں گے اب کے مطابق ہے جس کے، ہے لائن وہاں سے ایک ہے. میں چیک کریں. کے برابر ہے تو 0 برابر ہے. اب، ایک فوری طرف نوٹ، جب GetString 0 واپس آ سکتا ہے؟ کافی میموری نہیں ہے. ٹھیک ہے؟ یہ، یہ ہونے جا رہا ہے کہ شاذ و نادر ہے یقینی طور پر ہے جو کمپیوٹر پر یا megs کے سینکڑوں ملا RAM کے بھی gigs. لیکن یہ اصول میں، واپس کر سکتے ہیں 0، خاص طور پر اگر صارف تعاون نہیں کرتا ہے. کیا تم نہیں ہے جیسا دکھاوا کرنے کے طریقوں ہے inputted کچھ اور چال واپس لوٹنے میں GetString مؤثر طریقے سے 0. تو یہ اس کے لئے چیک کرنے کے لئے جا رہا ہے. تم میں سے کسی کے لئے شروع کر دیا ہے کیونکہ اگر ، پہلے ہی، انقطاع گناہ ملے - جو شاید ایک ذریعہ رہا ہے کچھ مایوسی کی - ان لوگوں کو تقریبا ہمیشہ ہی نتیجہ ہیں میموری سے متعلق غلطی کی. کسی نہ کسی طرح آپ کو ایک کے حوالے سے گڑبڑ آپ کو پتہ ہی نہیں چلا یہاں تک کہ اگر پوئینٹر، ایک پوائنٹر نہیں تھا. تو کیا تم انقطاع حوصلہ افزائی ہو کا استعمال کرتے ہوئے ہفتے میں سے ایک کے طور پر ابتدائی طور پر گناہ لوپ یا تھوڑی دیر کے لئے ایک طرح کچھ بہت دور جا کر لوپ اور ایک سرنی کچھ سرنی کی حدود ماضی کہ آپ میں ہفتے میں دو، کا اعلان کر دیا خاص طور پر. تم نے یہ بھی مسئلہ میں نے یہ کیا ہے ہو سکتا ہے بریکآؤٹ کے ساتھ چار قائم کی. آپ کو شاید نہیں دیکھا ہے اگرچہ کے لئے تقسیم کے کوڈ میں کسی بھی ستارے بریکآؤٹ، یہ باہر کر دیتا ہے کہ ان GRect اور GOval اور دیگر ایسی چیزوں، ان لوگوں کو اصل میں اشارہ ہیں ہڈ کے نیچے. ہم جیسے لیکن سٹینفورڈ،، ھال کی طرح اس تفصیل سے کم از کم لائبریریوں کے لئے مقاصد، زیادہ سے زیادہ ہم کرتے ہیں جیسے سٹرنگ اور چار * کے لئے. لیکن GRect اور GOval اور ان کے تمام آپ لوگ ہیں یا چیزوں کا استعمال کریں گے اس ہفتے کے آخر میں ہیں میموری پتوں. آپ کو صرف یہ نہیں جانتے. تو یہ، شاید، تو تعجب کی بات نہیں ہے آپ کو کچھ زائد سفر کر سکتے ہیں انقطاع گناہ. لیکن، اب یہاں دلچسپ کیا ہے ہم کر 0 کے لئے جانچ پڑتال کے بعد اگر سٹرنگ T ے ہو جاتا ہے. اچھا، مجھے ٹی کا اعلان کرتے ہیں. میں ایک مربع کے طور پر اپنی طرف متوجہ کرنے کے لئے جا رہا ہوں 32 بٹیں، یہ ٹی کہتے ہیں. اور پھر میں کرنے جا رہا ہوں ے ہو جاتا ہے. ٹھیک ہے، اس کا کیا مطلب ہے؟ ٹھیک ہے، یہ سوچنے کے لئے تھوڑا مشکل ہے کے بارے میں یہ وار تصاویر Picture. لیکن کرتے ہیں کے بارے میں سوچنا X کے اندر کیا ہے؟ اس متغیر کے اندر لفظی کیا ہے؟ قیمت Ox123. صرف اس لئے میں کہتا ہوں کہ جب سٹرنگ T ے ہو جاتا ہے، کہ لفظی نمبر لینے کا مطلب s میں، جس Ox123 ہے اور یہ Ox123 ڈال دیا. یا pictorially کی تو میں قسم کا خلاصہ دور اس تفصیل سے یہ ہے لفظی کر کے اثرات اس کے ساتھ ساتھ. تو اب، گزشتہ ہفتے میں واپس لگتا ہے کہ جب ہم نے سرمایہ دارانہ ٹی میں روانہ ٹی بریکٹ 0 کیا. ٹھیک ہے، یہ ایک ٹی بریکٹ 0، ہے اگرچہ پوائنٹر، آپ اسے جیسے علاج کر سکتے ہیں یہ ایک مربع کے ساتھ، ایک سرنی ہے بریکٹ سنکیتن. تو جہاں ٹی بریکٹ 0 ہے؟ ٹھیک ہے، یہ ح ہے. اور اس طرح ہم کوڈ کی اس لائن کا استعمال کرتے وقت، کہ سی type.h میں ہے جس کے دو بالائی، ہیڈر فائل، وہ کہاں ہے اس کا اعلان کر دیا ہے. آپ اس ایچ فائدہ لیکن کے کر رہے ہیں کورس کے، یہ ہے کہ ایک ہی عین مطابق ح ہے ے کے اندر ہے، تو بات کرنے کے لئے. اور اس طرح اب آپ یا تبدیل کر دیا ہے پونجیکرت اصل اور دونوں نقل نام نہاد. آپ میں ایک نقل نہیں کیا کیونکہ ایک انسان اسے بننا چاہتا ہوں کہ جس طرح. تو یہاں متعین کرنا، کیا تھا copy1.c آخری ہفتے میں؟ کام کرتا ہے، تو ہم اصل میں کر سکتے تھے سٹرنگ کی کاپی. اور بنیادی طور پر، ہم نے کیا کرنے کی ضرورت ہے سٹرنگ کی کاپی کرنے کے لئے کرتے ہیں؟ ٹھیک ہے، یہاں اس سبز ورژن میں میں ہوں یہ کافی حد تک کم کرنے والا. کام کرتا ہے اصل میں ہیں وہ اس کے ساتھ مدد کر سکتے ہیں. لیکن سب سے بنیادی ایک، اور سب سے زیادہ واقف ایک، کم از کم، جلد ہی ہو جائے گا ہم سے واقف، درج ذیل ہے - ایسا پہلی سطر پر ایک سبز رنگ میں کوڈ کی اب. میں صرف چار * کے طور پر کی rewrote. کوئی فعال ہے وہاں فرق. میں صرف CS50 لائبریری دور پھینک دیا اور میں نے اسے ایک چار * ہے کیا بلا رہا ہوں. اب ڈاٹ، ڈوٹ، ڈوٹ، وہاں تھے کیونکہ نہیں ہے کہ کچھ غلطی چیکنگ پھر کے بارے میں بات کرنے کے لئے دلچسپ. تو اب ٹی کا اعلان کر دیا ہے. یہ بھی ایک چار * ہے. تو میں نے پر ایک چھوٹا سا مربع مبذول کرائی پہلے کی طرح سکرین. لیکن دائیں ہاتھ کی طرف پر، malloc، ہم میموری مختص ہے. تو میموری میں سے کچھ حصہ مختص. اور ہم اصل میں کتنے بائٹس کرتے ہیں مختص کرنا چاہتے ہیں، یہ لگتا ہے؟ ویسے، S کی سٹرنگ کی لمبائی. یہ خوش ہے کہ ہے اگر ایسا ہے تو پانچ ہونے جا رہا. ہم ایچ ای L-L-O کہیں گے. پانچ بائٹس تو. لیکن اس وقت 1 پلس، کیوں 1؟ 0 کردار. ہم اس لڑکے کے لئے کمرے میں چھوڑ کر مت جاؤ تو ہم اتفاقی طور پر ایک ایسی صورت حال پیدا ہو سکتی ہے سٹرنگ ہے جہاں ایچ ای L-L-O. اور پھر اگلی بار GetString ہے ، کہا جاتا ہے اور میں نے مثال کے طور پر، میں ٹائپ کریں ڈیوڈ، ڈی کے ایک V-I-D، کمپیوٹر کی جا رہی ہے ے اصل میں یہ ہے کہ سوچنے کے لئے H-ای L-L-O-D کے ایک V-I-D ہے کیونکہ ان الفاظ کے درمیان میں توڑ نہیں ہے. تو ہم نے اس وقفے کی ضرورت ہے. تو ہم پانچ نہیں کرنا چاہتا. ہم چھ رائج کرنا چاہتے ہیں. اور بائٹس میں کہتا ہوں. لیکن یہ چار کا سائز واقعی بہت وقت ہے. تکنیکی چار تقریبا ہے ہمیشہ ایک ہی بائٹ. لیکن صرف ہماری پورٹیبل کوڈ بنانے کے لئے، تو اس پر کام کرتا ہے، تا کہ بات کرنے کے لئے مختلف کمپیوٹرز بھی وہ شاید اگر نیچے کسی حد تک مختلف ہو ڈاکو، میں generically کرنے جا رہا ہوں چار کے سائز کا کہنا ہے کہ تاکہ میرا کوڈ ہمیشہ کام کرتے ہیں. اور میں یہ صرف recompile کی ضرورت نہیں ہے میں نے اپنے کمپیوٹر کی اپ گریڈ کرنے یا استعمال کرنے کے لئے کی وجہ سے کچھ مختلف پلیٹ فارم. تو میں نے کے 6 گنا سائز مل گیا ہے 1 ہو جس کی وجہ سے چار،. تو اس کا مطلب malloc سکتا مجھے چھ بائٹس دے. اصل میں کیا کر رہی ہے کہ کیا ہے؟ ٹھیک ہے، مجھے یہاں وقت میں واپس رول دو ہم نے کہانی میں ہیں جہاں پر. میں یہاں واپس جانا اگر ایسا ہے تو میں نے اعلان کیا ہے T نامی ایک چار *. میں اب چھ بائٹس کے لئے malloc بلایا ہے. اور اب میں ان چھ اپنی طرف متوجہ کرنے کے لئے جا رہا ہوں صرف سرنی پہلے کی طرح بائٹس. لیکن میں نے اصل میں کیا ہے نہیں جانتے اس صف کے اندر. آپ میموری مختص تو یہ باہر کر دیتا ہے کہ آپ کو کچھ بھی ہے کہ اس پر اعتبار نہیں کر سکتے ہیں وہاں پر جانا جاتا ہے قیمت. یہ کچھ کی طرف سے استعمال کیا جا سکتا تھا اس کے علاوہ، کچھ دوسرے تقریب، کچھ دوسرے آپ نے لکھا ہے کہ کوڈ کے لائن. تو ہم عام طور پر ان میں سے ردی کی ٹوکری میں فون کروں گا اقدار اور کے طور پر، شاید، ان میں اپنی طرف متوجہ سوال نمبر، صرف اشارہ ہے کہ ہم وہاں اصل میں کیا ہے نہیں جانتے. اور یہ کہ اتنے لمبے وقت تک کے طور پر ہم کوئی بڑی بات نہیں ان ادلیکھت کرنے کے لئے کافی ہوشیار ہیں ردی کی ٹوکری میں تعداد کے ساتھ اقدار یا ہم پرواہ کہ حروف. تو اس معاملے میں میں کیا کرنے جا رہا ہوں؟ ٹھیک ہے، میرے لائن کوڈ اگلے، مجھے چار ہے. میں 0 حاصل INT، (ن) ہو جاتا ہے ے کی سٹرنگ کی لمبائی. لوپ کے لئے تو ایک شناسا. میں، کم یا (ن) کے برابر ہے جو عام طور پر مندرجہ بالا ہے. لیکن اس وقت یہ جان بوجھ ہے. میں + +، اور پھر میں صرف کرتے ہیں T بریکٹ میں ے ہو جاتا ہے. میری تصویر میں اس کی طرح لگتا ہے کیونکہ T میں ذخیرہ اس لمحے ہے، میموری کی کہ بے ترتیب حصہ کا پتہ جن کی اقدار نامعلوم ہیں. لیکن جیسے ہی میں نے ٹی بریکٹ کر کے طور پر مجھے یہاں رکھتا ہے 0. اور وہاں کیا تیار ہو رہی ہے ختم ہو جاتی ہے؟ ہم ایچ ڈال جاتے ہیں. اس کے بریکٹ 0 میں ہے کیا ہے کیونکہ. کے لئے اور پھر ایک ہی بات ای، اور میں، اور میں، اور اے. (ن)، کیوں میں کے ذریعے جانا تھا (ن) کے لئے ایک برابر؟ 0 کردار کی وجہ سے. تو صرف اس صورت میں، صاف ہو جائے، تو میں اصل پر مٹا جو کچھ بھی ان ردی کی ٹوکری اقدار ہیں اور پھر اصل میں میں اپنی طرف متوجہ میں توقع کیا، اس کے بریکٹ 1، 2، ہے 3، 4، کے علاوہ ہے کہ پشت بندی ہے نئے کردار. اور اس طرح اب ہم، ڈوٹ ماضی جاری رہا تو یہ صحیح ورژن میں نقطہ، ڈوٹ اور پوںجیکرت T 0 بریکٹ میں کروں گا، کے کورس کے، فائدہ جائے صرف اس یہاں آدمی، جس conceptually، بالآخر مقصد تھا. تاکہ سب پوائنٹر ہے. اور آپ ہفتے کے لئے ان کا استعمال کرتے ہوئے کیا گیا ہے اب ڈور کے تناظر میں. لیکن ہڈ کے نیچے وہ لوگ تھوڑا سا زیادہ پیچیدہ. لیکن آپ اس میں ان کے بارے میں لگتا ہے کہ اگر سچتر فارم وہ ہیں کہ میں نے تجویز وہ شاید یہ سب ڈراونی نہیں پہلی پہلی نظر میں لگتا ہے ہو سکتا، خاص طور پر اس طرح کے نئے نحو کے ساتھ. اشارہ پر کسی بھی سوال کا، ڈور، یا حروف؟ جی ہاں؟ سامعین: آپ کو واپس جا سکتے ہیں [اشراوی] ہے؟ اسپیکر 1: بالکل. سامعین: آپ بہت آخری میں آئے تو کس طرح لائن، آپ کو ایک * T لائن نہیں ہے اور ایک * ے لائن میں؟ آپ کے پاس حوالہ نہیں ہے - اسپیکر 1: آہ، ایک بہت اچھا سوال ہے. کیوں میں نے ایک * T اور ایک * ے نہیں ہے؟ کیونکہ ہماری طرح میں مختصر طور پر، گزشتہ ہفتے، تقریب تبادلہ، میں نے وہ کب کہا آپ کی طرف سے ایک پوائنٹر مطلب مل گیا ہے ہم نے کیا کے طور پر تم وہاں جاؤ جو جسمانی طور پر اسٹیج پر، پر اصل میں تھا ستارہ آپریٹر کا استعمال کریں. یہ باہر کر دیتا ہے کہ اس مربع بریکٹ سنکیتن ہم syntactic فون کروں گا کیا ہے کی صرف ایک سیکسی طریقہ ہے جس میں چینی، کے لئے اس کی آشلپی سنکیتن کہہ آپ بیان کر رہے ہیں بالکل وہی جو. لیکن یہ تھوڑا زیادہ بدیہی ہے. اور بنانے کے خطرے میں اس سے زیادہ لگ رہے ہو یہ کرنے کی ضرورت سے زیادہ پیچیدہ، کیا سچ میں یہاں کیا چل رہا ہے مندرجہ ذیل ہے - میں نے کا مطلب ہے کہ * T کا کہنا ہے کہ اگر میں جانا ایڈریس T میں ذخیرہ. تو لفظی، محفوظ T ہے تو کہ ایچ کا پتہ ابتدائی طور پر، * T مطلب ہے یہاں جانا. اب، T بریکٹ 0 کیا مطلب ہے؟ ایک ہی عین مطابق بات ہے. یہ صرف تھوڑا زیادہ صارف کے لکھنے کے لئے دوستانہ. لیکن میں نے ابھی تک نہیں کیا کر رہا ہوں. میں صرف * T * ے ہو جاتا ہے نہیں کہہ سکتے. کیونکہ میں اس وقت کیا کر رہے ہو جائے گا؟ مجھے H، H، H، H، H ڈال جائے گا پوری بات بھر میں. ٹھیک ہے؟ * T ہے کیونکہ ٹی کا پتہ کرنے کے لئے جانا. لیکن ہم ایک لوپ کے اندر ہیں. اور کیا قیمت میں، incrementing رہا ہوں کورس کے، ہر iteration پر نہیں ہیں؟ میں. لیکن ایک موقع ہے یہاں، ہے نا؟ یہ ہو رہا ہے جیسے یہ لگتا ہے اگرچہ تھوڑا سا زیادہ بہتر مربع بریکٹ سنکیتن سے زیادہ ہم نے کچھ وقت کے لئے استعمال کیا جاتا ہے - مجھے وہاں میری H تبدیلی کو رد کرتے ہیں - اب یہ تھوڑا سا ہو رہی ہے اگرچہ fancier، بنیادی خیال تو * T یہاں کا مطلب ہے اور * T صرف یہ ہے T میں ایڈریس پر جاؤ. لیکن ٹی کا پتہ کیا تھا؟ ہم کا استعمال جاری رکھ نمبر؟ Ox456 طرح کی ہے کہ واپس لا دو صرف بحث کی خاطر. ٹھیک ہے، میں میں ای میں حاصل کرنے کے لئے چاہتے ہیں تو T سٹرنگ، میں صرف، میں جانا چاہتا ہوں بنیادی طور پر، 456. یا بلکہ، 457. میں صرف ایک میں شامل کرنے کی ضرورت ہے. لیکن میں، درست ہے کہ کر سکتے ہیں؟ T، میں ڈرائنگ رکھنے کے باوجود کیونکہ اب یہ ایک تیر کے طور پر، یہ صرف ایک ہے نمبر، Ox456. اور میں اس کے لئے ایک کا اضافہ کریں، یا اس سے زیادہ اگر عام طور پر، میں میں کر سکتا ہوں کہ اس میں شامل ہے تو میں چاہتا ہوں کہاں اصل میں ملتا ہے. تو میں نے اصل میں یہ کر تو - اور اب یہ کہا جاتا ہے کیا ہے پوائنٹر ریاضی - میں اس لائن کو ہٹا سکتے ہیں. واضح طور سے، ہے، میں واضح اور سوچو پڑھنے کے لئے تھوڑا زیادہ صارف دوستانہ. لیکن یہ کم نہیں ہے وہ درست ہے. کوڈ کا یہ لائن اب استعمال کر رہا ہے پوائنٹر ریاضی. اس کے پاس جاؤ کہہ رہا ہے مندرجہ ذیل پتے - T کے آغاز سے جو کچھ بھی ہے، جس میں جس میں ابتدائی طور پر ٹی کے علاوہ میں، ہے بہت اچھا ہے، جس 0 ہے. کہ T کے آغاز کا مطلب ہے کیونکہ پلس 1، پلس 2، کے علاوہ 3، اور تو آگے. کے ساتھ اور ایک ہی سودا ہے. اس کے لئے تو syntactic چینی. لیکن تفہیم کیا واقعی میں ہو رہا ہے ہڈ کے نیچے، میں بحث کریں گے اپنے آپ میں اور کے اصل میں مفید ہے. یہ وہاں نہیں ہے اب کا مطلب ہے کیونکہ بہت زیادہ جادو چل رہا ہڈ کے نیچے. بہت زیادہ ہونا نہیں جا رہے ہیں ہم آپ کے لئے چھیل حمایت کر سکتے ہیں تہوں. یہ سی ہے. اور یہ پروگرامنگ ہے. سوال بہت اچھا. ٹھیک ہے، تو یہ ہے کہ چھوٹی گاڑی تھی میں نے پہلے کیا گیا تھا پروگرام کا حوالہ دیتے ہوئے. تبدیل ناقص تھا. کام کرنے کے لئے لگ رہے ہو کیا تو. صرف دودھ کے ساتھ پسند ہے اور یہ کہ یاد سنتری کا رس - میں شروع ہونے والی آج کے مظاہرے کے پینا. تو صرف سنتری کا رس کے ساتھ کے طور پر دودھ، ہم ایک استعمال کرنے کے لئے کی کیا ضرورت تھی عارضی طور پر متغیر، tmp، ایک منعقد کرنے عارضی طور پر تا کہ ہم اس وقت کر سکتے تھے ب کو اپ ڈیٹ کریں تو اس کی قیمت کو تبدیل کرنے اور. لیکن یہ تقریب، ہم نے کہا، یا اس اس تقریب تھی جس میں پروگرام تحریری غلط اور غلط تھا، کیوں؟ جی ہاں؟ سامعین: [اشراوی]. اسپیکر 1: بالکل، جب آپ کو سویپ فون - یا اس سے زیادہ عام طور پر، جب آپ سب سے زیادہ کسی بھی تقریب فون - اس تقریب میں دلائل ہیں تو آدم،، تو بات کرنے ints اور حروف اور ڈبلز اور floats، چیزوں کے بغیر ستاروں، آپ کی کاپی میں گزر رہے ہیں دلیل. X 1 تھا اور y 2 تھا اگر ایسا ہے تو ایک جا رہا ہے 1 ہونا اور بی 2 بننے جا رہی ہے. لیکن وہ مختلف حصوں بننے جا رہے ہو کی بٹس، مختلف حصوں کی محفوظ کرنے کے لئے ہو کہ میموری ایک جیسی اقدار. تو اس کوڈ کامل سپر ہے A اور B گماگمن میں. یہ گماگمن میں اچھا نہیں ہے - - گزشتہ ہفتے کی مثال میں x اور y کیا. ایک بار پھر، وہ ہیں کیونکہ غلط گنجائش میں. اب، ہم اس کا تعین کے بارے میں کس طرح گئے تھے؟ ہم تقریب بنانے کے لئے تھا تھوڑا uglier نظر آتے ہیں. لیکن پھر غور کیا یہ صرف کا مطلب ہے. اور اصل میں، مستقل مزاجی کے لئے، مجھے دو اس کے لئے ایک جیسی ہے تو ایک چیز تبدیل ہم صرف نے کیا کیا. میں نے گزشتہ ہفتے ذکر کیا ہے، یہ نہیں کرتا یہ کہاں جاتا ہے فرق. اصل میں، عام طور پر آپ ڈال دیں گے متغیر کے نام کے آگے ستارہ. لیکن میں یہ تھوڑا آسان ہو جائے گا لگتا ہے کرنے کے لئے اگلے * غور کرنے کے لئے اس کا مطلب ہے کے طور پر اعداد و شمار کی قسم ایک پوائنٹر ہے اس کیس میں ایک INT کرنے کے لئے. میں یہاں تو کیا کر رہا ہوں؟ مجھے ایک INT نہیں دیتے یہ کہہ رہا ہوں ایک اور INT، اس کے بعد ان کو a اور b بلا. مجھے ایک INT کا پتہ دے دو. مجھے ایک اور INT کا پتہ دے دو. ان لوگوں کو a اور b خطاب کال کریں. اور پھر * سنکیتن نیچے کا استعمال کرتے ہوئے ذیل میں ان میں سے ہر پتے پر جانا یا تو کے طور پر حاصل کرنے کے لئے کی ضرورت ہے یا اس کی قیمت مقرر کریں. لیکن یہاں ایک رعایت ہے. میں کیوں tmp کے ساتھ ایک * نہیں ہے؟ کیوں میں نے مثال کے طور پر ایسا نہیں کرتے؟ میں صرف تمام جانا چاہیئے ایسا لگتا ہے باہر اور پوری بات درست. جی ہاں؟ سامعین: [اشراوی]. اسپیکر 1: میں اعلان نہیں کیا ہے ایک تار کے طور پر tmp. تو یہ، اس صورت میں، کا اعلان کرے گا ایک tmp ایک INT کا پتہ ہو. لیکن ہے، اب مجھے کیا کرنا چاہتے ہیں کافی نہیں ہے وجوہات میں سے ایک جوڑے کے لئے. سامعین: آپ ان سے تبادلہ نہیں کرنا چاہتا. اسپیکر 1: بالکل، میں تبادلہ نہیں کرنا چاہتا tmp ساتھ کچھ بھی. tmp صرف یہ ہے ہفتے ایک چیزیں. مجھے صرف ایک متغیر ہے کچھ تعداد میں ذخیرہ کرنے کے لئے. مجھے یہ بھی پتے کی پرواہ نہیں کرتے اس وقت. میں صرف 32 بٹیں کی ضرورت ہے یا تو INT ذخیرہ کرنے کے لئے. اور میں ان 32 بٹیں میں ڈال کرنا چاہتے ہیں جو کچھ بھی تو بات کرنے کے لئے، ایک میں نہیں ہے، لیکن صرف زیادہ عین مطابق ہو، ایک میں کیا ہے. ایک ایک پتہ ہے، اگر * ایک کا مطلب ہے کیونکہ وہاں جانے اور قیمت 1 ملتا ہے. مثال کے طور پر، گزشتہ ہفتے کی مثال میں یا ب کی صورت میں، 2 کی قیمت حاصل کریں. تو کیا واقعی چل رہا ہے؟ مجھ سے کریں گے کہ یہاں ایک تصویر اپنی طرف متوجہ کرتے ہیں صرف آج کے ایک حصے کے کے علاوہ چڑھانا. لیکن یہ ظاہر کرنے کے لئے جاری رہے گی کچھ وقت کے لئے. یہ، میں دعوی کرتے ہیں، کیا آپ کے کمپیوٹر کی ہے یاد جب آپ کو ایک چلانے کی طرح لگتا ہے پروگرام کسی بھی پروگرام. آپ کو بہت سے اوپر دیئے گئے ایک پروگرام چلاتے ہیں تو آپ کے کمپیوٹر کی RAM کے - اس کے بارے میں سوچنا آپ کے طور پر اس مستطیل، واقعی، کمپیوٹر کی ریم یا میموری، تمام 101 اس کے ارب بائٹس، تمام دو بلین رائج ہے، یہ سب کے سب دو گیگا بائٹ، آپ کے پاس مقدار جو بھی ہو، کی یہ ایک مستطیل کے طور پر اپنی طرف متوجہ کرتے ہیں. آپ کو ایک پروگرام چلائیں اور جب میں نے کا دعوی ہے کہ مائیکروسافٹ ورڈ یا کروم کی طرح اس طرح یا کچھ، کہ بٹس مائیکروسافٹ یا یہ کہ گوگل نے لکھا - ان پروگراموں کے مقدمات میں - آپ کے کمپیوٹر کی میموری میں بھری ہوئی ہیں وہ قتل کیا جائے گا کر سکتے ہیں جلدی اور کھلایا سی پی یو میں ہے، جس کمپیوٹر کے دماغ ہے. اور نہیں ہے میں وہ بہت میں جمع کیا جاتا ہے آپ کے پروگرام کے سب سے اوپر ہے، تو بات کرنے کے لئے. دوسرے الفاظ میں، تو اس کا ایک حصہ ہے میموری، آپ ڈبل پر کلک کرنے پر مائیکروسافٹ ورڈ، بٹس آئے ہارڈ ڈرائیو سے دور. انہوں نے رام میں بھری ہوئی ہو. اور ہم نے بہت سے اوپر دیئے گئے ان کو دھکا گے conceptually اس مستطیل کی. ویسے، تمہاری یاداشت باقی ہے مختلف چیزوں کے لئے استعمال کیا. بہت سے اوپر دیئے گئے آپ کی ابتدا دیکھنا اعداد و شمار اور ڈیٹا uninitialize. اس کے ساتھ، سب سے زیادہ حصہ کے لئے، کیا کرنا ہے constants یا عالمی متغیر کہ اقدار ہے. ان لوگوں کو کسی دوسرے وقت پر لیکن زیادہ. پھر آپ جس ڈھیر، ہے ہم واپس آ جائیں گے. لیکن نچلے حصے میں ہے کہ حصہ ہے خاص طور پر ابھی germane. یہ نام نہاد اسٹیک ہے. تو بس یہاں پر سب سے زیادہ کسی بھی ڈی ہال میں پسند کیمپس میں، آپ ان ٹرے ہے کہ بس جس پر ایک دوسرے کے اوپر پر ڈھیر لگانا آپ کو کھانے اور whatnot ڈال کر سکتے ہیں. ایک کمپیوٹر کے نظام میں اسٹیک بہت ملتا جلتا ہے. ہم میں استعمال کے طور پر، ٹرے جبکہ سوائے ڈائننگ ہال، کورس کی، مراد ہے چیزوں ٹرے لے جانے کے لئے یا فریم - ہم انہیں فون کروں گا کے طور پر - ایک کمپیوٹر میں میموری منعقد کرنے کا استعمال کیا جاتا ہے متغیر اور اقدار. تو کیا واقعی پر جاتا ہے ہڈ کے نیچے؟ ٹھیک ہے، مجھ پر پلٹائیں دو یہاں سکرین. اور لشکر طیبہ کی بس پر توجہ مرکوز ایک لمحے کے لئے سب سے نیچے کا حصہ. یہ میرا سب سے نیچے حصہ ہے تو کے کمپیوٹر کی میموری یہ باہر کر دیتا ہے جب میں تقریب کے اہم فون - ، جو واضح طور سے، ہوتا خود کار طریقے سے میرے لئے - میں میں میموری کا ایک حصہ ملے میری رام کے سب سے نیچے تو بات کرنے کے لئے. اہم کہاں ہے اور یہ ہے مقامی متغیر جاتے ہیں. جہاں argc اور argv شاید یہ ہے جانا، اور کسی بھی متغیر میں اہم کے اندر کا اعلان. وہ نچلے حصے میں ختم میرے کمپیوٹر کی RAM کے. اب اس اہم کالز ایک تقریب فرض سویپ کی طرح، اس طرح گزشتہ ہفتے کیا تھا؟ اچھا، ہم بنیادی طور پر ایک، ایک نئی ٹرے میں ڈال میموری کی اپنے حصہ پر نئے فریم،. اور میں اس کے طور پر کی وضاحت کرنے جا رہا ہوں سویپ تقریب سے تعلق رکھنے والے. اب سویپ کے اندر کیا ہے؟ ٹھیک ہے، گزشتہ ہفتے کے پروگرام پر مبنی ہے اور ہم صرف سے ایک اقتباس دیکھا ایک، سویپ کی فریم کے اندر، یا سویپ کی پر ٹرے، کیا متغیر ہیں؟ ٹھیک ہے، اے اور بی. ان لوگوں کو، اس کے مقامی دلائل تھے کیونکہ کے علاوہ ایک تیسری، tmp. تو سچ میں، میں اس طرف متوجہ کر سکتے ہیں تھوڑا زیادہ cleanly. مجھ سے آگے بڑھو اور لیبل کو رد کرتے ہیں. اور تم کیا جانتے ہیں کہ آپ کے وزٹرز کا دعوی کرتے ہیں؟ ایک شاید یہاں ختم کرنے کے لئے جا رہی ہے. بی یہاں ختم کرنے کے لئے جا رہی ہے. اور tmp یہاں ختم کرنے کے لئے جا رہی ہے. اب، حکم دے سکتا ہے تھوڑا سا مختلف ہو. لیکن conceptually یہ خیال ہے. اور صرف اجتماعی طور پر، یہ کیا ہم سویپ کی فریم فون، یا گے ڈائننگ ہال-ٹرے. بنیادی کے ساتھ اور ایک ہی سودا ہے. لیکن میں نے اس redraw نہیں کرے گا. لیکن وہ کہاں ہے argc اور argv اور کسی بھی X اور Y کی طرح اس کے مقامی متغیرات میں سے کے طور پر اچھی طرح سے ہو سکتا ہے. تو اب سچ میں کیا ہو رہا ہے کے بارے میں غور آپ کو سویپ فون جب. جیسے آپ کو سویپ کال کرتے ہیں، تو عمل کوڈ یہ، کیا تم میں، میں گزر رہے ہیں چھوٹی گاڑی ورژن، A اور B جیسا کہ x اور Y کی کاپیاں. اب میں اس طرف متوجہ کرتے ہیں تو اگر سکرین پر - اس میں بہتر حاصل کرنے کے لئے مل گیا - میں نے خود سے کہہ رہا تھا کہ کہانی اتنی اس چھوٹی گاڑی ورژن میں تھا جب ہم نے لفظی A اور B میں گزر تبادلہ فون integers کے طور پر، کیا واقعی میں کیا ہو رہا ہے؟ ٹھیک ہے، کیا واقعی میں ہو رہا ہے یہ ہے. مجھ سے آگے بڑھو اور صرف کالعدم چلو یہاں کچھ جگہ کو صاف کرنے. تو یہ میرے کمپیوٹر کی میموری ہے. میرے پاس ہے لہذا اگر مثال کے طور پر - اصل میں چلو اس طرح کرتے ہیں - میں اس کو ذخیرہ کرنے میں، ایکس ہے کا دعوی ہے کہ اگر صرف گزشتہ ہفتے کی طرح قیمت 1. اور اس قیمت کو محفوظ، y کیا ہے 2 گزشتہ ہفتے ہی پسند کرتے ہیں. اور یہ، میں تبادلہ فون جب اہم ہے اس طرح ایک اور اپنے آپ کو رسائی دینے کے ب اور tmp، میں یہ دعوی کرنے جا رہا ہوں یہ ایک ہے اور یہ 1 ہے. یہ ب ہے. یہ 2 ہے. یہ tmp کہا جاتا ہے. اور ابتدائی طور پر، یہ کچھ ردی کی ٹوکری میں اہمیت کی حامل ہے میں واقعی میں یہ ایک میں سٹور، تک جس میں 1 ہے. پھر میں آگے بڑھو اور تبدیل ایک کیا ہے؟ B کی قیمت. اور تو اب میں یہاں دو ہے. اور پھر ہم ب tmp ہو جاتا ہے. ایک بار پھر، ایک وویک چیک کریں جیسا کہ، تیسرے یہاں کوڈ کی لائن صرف یہ ہے ایک، ب tmp ہو جاتا ہے. اور اس طرح آخر میں، میں کیا کروں؟ میں آگے بڑھو اور ب ہونے کے لئے جو کچھ بھی تبدیل tmp کی قدر 1 ہے، جو ہے. میں دوبارہ tmp مت چھونا. لیکن اب، مسئلہ کے طور پر جلد کے طور پر تبادلہ ہے واپسی، اس حوالے نہیں ہے کیونکہ کچھ قیمت واپس، واپسی نہیں ہے بیان میں اس میں واضح طور پر. اصل میں کیا ہو رہا ہے؟ ٹھیک ہے، بنیادی طور پر اس سب کے میموری - ٹھیک ہے، بظاہر صافی پسند کرتا ہے ایک وقت میں صرف ایک انگلی - صرف غائب. اب حقیقت میں ایسا نہیں ہے کہیں نہیں جا رہا. لیکن تم اس کے بارے میں سوچ کر سکتے ہیں اب سوال نمبروں کے طور پر. یہ اب نہیں ہے کیونکہ اصل میں استعمال میں. اور کچھ بھی نہیں ان اقدار کے ساتھ کیا جاتا ہے. تو اس کے سبز ورژن کی صورت میں اس کوڈ کی بجائے کیا جا رہا ہے تبادلہ میں منظور کیا؟ لہذا خطاب کرتے ہیں. تو X کے ایڈریس اور Y کا ایڈریس. ہم تو اگر اس کہانی ایک آخری دوبارہ بتا وقت، اور میں نے اصل میں، ایک بار پھر تبادلہ اپنی طرف متوجہ لیکن اشارہ کے ساتھ، اس، ایک کیا جا رہا ہے ب ہونے کی وجہ سے، اور یہ ہونے tmp، کیا ہے اصل میں اس کے سبز رنگ میں ایک میں ذخیرہ میں گزر رہا ہوں، جہاں میرا کوڈ کے ورژن پتے میں؟ یہ ایکس کرنے کے لئے ایک پوائنٹر ہونے جا رہا ہے. تو میں نے ایک تیر اپنی طرف متوجہ کر سکتے ہیں. لیکن اسی کی من مانی کا استعمال کرتے ہیں دو پہلے کی طرح مثال کے طور پر. چلو اس کا کہنا ہے کہ Ox123 کی طرح کچھ. اور یہ Ox127 بننے جا رہی ہے کیونکہ یہ ہے کیونکہ اسے چار بائٹس دور ہے ایک INT، تو Ox127. اور پھر، میں کچھ آزادی لے جا رہا ہوں تعداد کے ساتھ. وہ کرے گا کے مقابلے میں بہت چھوٹے ہیں اصل میں ایک مختلف ترتیب میں ہو اور. لیکن یہ کس طرح تصویر ہے اب مختلف ہے. لیکن میں اس کے سبز رنگ کا کوڈ کا استعمال کرتے وقت اور میں INT tmp * ایک حاصل کروں. ، مندرجہ ذیل کام لینے کے لئے * ایک ذریعہ ، ایک میں ہے کہ اس سے نمٹنے اور اس کے پاس جاؤ جس میں 1 ہے. اور اس لیے میں تو tmp میں ڈال دیا ہے. اسی اثناء میں، کوڈ کی اگلی قطار میں یہاں، * ایک ب ہو جاتا ہے، اس کا کیا مطلب ہے؟ ٹھیک ہے، * ایک، تو یہاں جا کر ملتا ہے * ب، جس میں وہاں جانے کا مطلب ہے. اور وہاں پر قیمت ڈال کا مطلب ہے کہ. آخر میں، کوڈ کی آخری لائن صرف * ب tmp ہو جاتا ہے. تو بی کا کہنا ہے کہ وہاں جاکر اس کے ساتھ ادلیکھت ، اس صورت میں، جا رہا ہے جس tmp ، ایک بار پھر، 1 ہو. اور یہی وجہ ہے کے سبز ورژن ہمارے کوڈ کام کرتا ہے، جبکہ سرخ ورژن کبھی نہیں کیا. کس طرح کرنے کے لئے نیچے یہ سب صرف فوڑے میموری انتظام کیا اور یہ کہاں ہے اصل میں آپ میں رکھا کمپیوٹر کی RAM. اور اب کے لئے، ان چیزوں میں سے ایک ہے اسٹیک کے لئے استعمال کیا جا رہا ہے. ترتیب پر سوالات؟ اشارہ پر؟ یا سویپ پر نہیں ہیں؟ ٹھیک ہے، تو malloc، یاد، کچھ اس طرح کیا ہے. یہ ایک سپر سادہ مثال کے طور پر تھا. اور اس سے ایک تھا کہ Binky کافی تاہم، ہمیں متعارف فوری طور پر، کلاس کے اختتام پر. Dammit، وہاں ہم نے ایک بار پھر جانا. تو اس مثال تھا کہ یاد ہے کہ Binky تاہم، ہمیں متعارف کسی حد تک تیزی سے کلاس کے اختتام پر. اور یہاں ہم واقعی malloc استعمال کیا جاتا ہے دوسری بار. پہلی بار کیونکہ ہم نے اسے استعمال کیا جاتا ہے کافی RAM، بنانے، کافی RAM مختص ایک تار ذخیرہ کرنے کے لئے. اس وقت Binky یہ سادہ رکھا. تو یہ صرف ذخیرہ کرنے کے لئے ہے ایک INT، بظاہر. اور یہ کہ مکمل طور پر ٹھیک ہے. یہ کرنے کے لئے، واضح طور سے، تھوڑا سا عجیب ہے ایک INT مختص malloc استعمال کرتے ہیں. لیکن نک claymation کے نقطہ تھا واقعی صرف کیا کہانی بیان ہوتا ہے یا جب نہیں ہوتا آپ میموری برا سلوک. تو اس صورت میں، اس پروگرام کچھ چیزیں کیا. یہاں پہلی صورت میں، یہ اعلان ایک پوائنٹر ایک INT پر X کہا جاتا ہے. یہ تو ایک پوائنٹر اعلان ایک INT پر Y ملاقات کی. اس کے بعد، ایکس میں کیا ذخیرہ؟ اب کسی. کے مطابق ایکس میں جمع ہو جاتا ہے کیا اس پروگرام کے تیسرے لائن؟ سامعین: [اشراوی]. اسپیکر 1: ٹھیک ہے، نہیں بہت بائٹس، کا کہنا ہے کہ فی. اب زیادہ عین مطابق ہو. ایکس میں کیا ذخیرہ کیا جاتا ہے؟ ایک پتہ، میں نے اسے سنا لگتا ہے. تو malloc کیا واپس کرتا ہے؟ malloc behaviorally مختص میموری کا ایک حصہ. لیکن یہ کس طرح آپ کو اس تک رسائی دے دیتا ہے؟ یہ کیا واپس؟ پہلے بائٹ کا پتہ میموری کا حصہ میں. اب، یہ سپر آسان ہے. یہ صرف ایک بائٹ ہے، جس کا مطلب ہے کہ ہم واپس جا رہے ہیں پتہ ہے پوری بات کا پتہ. تو ایکس میں ذخیرہ، پتہ ہے میموری کے اس حصہ کی. دریں اثنا، آگے کیا ہوگا؟ تو اصل میں، کی آگے چلتے ہیں اور یہ باہر اصلی تیزی سے اپنی طرف متوجہ. ہم یہاں کی سکرین کو جانا ہے اور اگر ایسا ہے تو ہم اس کو باہر کھیلنے INT * x اور INT * Y میرے لئے کیا کیا جا رہا ہے؟ میں نے یہ صرف کرنے کے لئے جا رہا ہے کا دعوی ہے کہ کچھ اس طرح ہے اور اسے ایکس فون، اور یہ اور یہ y کیا کہتے ہیں. اسی اثناء میں، کوڈ کی تیسری لائن ہے ایک INT کا سائز مختص جا، جو ہونا ہوتا ہے - میں نے کہا افسوس اگر - میں ایک INT مراد ایک سے پہلے ایک عام کمپیوٹر پر چار بائٹس. CS50 آلات کے ساتھ کم از کم. تو یہ مختص کی جا رہی ہے یہ کون جانتا ہے؟ کہیں باہر یہاں. اور یہ کچھ میں محفوظ کیا جاتا ہے ایڈریس بیل، کون جانتا ہے؟ لیکن جو واپس آیا کرنے کے لئے جا رہا ہے اس ایڈریس ہے. لیکن ہم pictorially اس طرف متوجہ کریں گے کے طور پر اس طرح صرف ایک تیر. اب اگلی لائن میں * ایکس 42 ہو جاتا ہے. * X عام آدمی کی شرائط میں کیا مطلب ہے؟ بس وہاں جاؤ. اس ایڈریس پر جاؤ. یا دوسرے لفظوں میں، پر عمل کریں تیر اور وہاں 42 ڈال دیا. لیکن پھر کچھ برا ہوا Binky پر، ہے نا؟ اس لائن یہاں پانچ یاد، * Y ہو جاتا ہے 13، واقعی ایک اشوب نمبر، ہمارے لئے کیا کیا؟ ٹھیک ہے، * Y مطلب وہاں جاتے ہیں. ٹھیک ہے، یہ نہیں دیا گیا ہے ایک کی قیمت ابھی تک، ہے نا؟ کوڈ Y ہونے کی وجہ سے نہیں ہے کچھ initialized. ہم X initialized کیا جا رہا تھا ایک ایڈریس پر. لیکن Y اوپر قرار دیا گیا. لیکن پھر ایک نیم وقفہ، کوئی قیمت نہیں اصل میں یہ میں ڈال دیا گیا تھا. تو یہ اس کو فون کرنے کی منصفانہ ہے ردی کی ٹوکری میں ایک قیمت. وہاں کون کیا جانتا ہے؟ یہ استعمال کیا گیا تھا کہ بٹس کی باقیات ہے میں کوڈ کے کچھ گزشتہ لائن کی طرف سے میرا پروگرام. میں نے وہاں جانے کا کہنا ہے کہ اگر ایسا ہے تو اس کی طرح ہے، میں اس تیر کے نشان ہے جہاں کوئی اندازہ نہیں ہے کو ختم کرنے کے لئے جا رہے ہیں. جب آپ عام طور پر اور یہ کہ ہے ایک انقطاع غلطی ملتی ہے. اگر آپ نے غلطی dereference تو ایسا کرنے کے لئے بولتے ہیں، یا نہیں ہے کہ ایک ایڈریس پر جانا اصل میں ایک جائز ایڈریس، بری چیزیں ہو. اور اس کے ساتھ کیا ہوا تھا بالکل ویسا ہی ہے Binky سوچنا. تو یاد ہے کہ نک تھا کہ کہانی یہاں کہہ ایک ہی خیال کیا تھا کے طور پر میں برم کے ساتھ تیار کی ہے وہاں بورڈ پر چاک. X اور Y کا اعلان کر رہے ہیں. پھر ہم کا سائز مختص ایک INT اور ایکس میں ذخیرہ. پھر ہم نے اگلی لائن * X. یہ نک کی جادو کی چھڑی تھی محولہ لقب ضبطی کی. کہ یاد میں 42 ڈال X کی طرف سے نشاندہی کی. لیکن یہ ہے جہاں چیزیں بری غلط ہو گیا. ٹھیک ہے؟ ہم dereference Y کی کوشش کی. لیکن Y حق، کچھ بوگس قیمت تھا؟ نیچے بائیں ہاتھ میں تیر کونے، نہیں ہے اصل میں کچھ کی طرف اشارہ. یہ میں کیا کر رہی کی طرح ہے بورڈ پر یہاں کیا. تو بری چیزیں ہو، انقطاع اس معاملے میں غلطی، یا Binky غلطی،. لیکن ہم اس وقت ایکس کر کے اسے ٹھیک تو y کیا جاتا ہے کہ کس طرح کہانی تبدیلی کرتا ہے؟ ٹھیک ہے، میں ایکس کرتے ہیں تو ہے کہ Y، ہو جاتا ہے کہہ کے طور پر مؤثر طریقے سے ایک ہی یہ جو کچھ بھی ہے، بیل-کچھ ، یہاں ایک ہی ہونے جا رہا ہے بیل-کچھ. یا pictorially ہم ایک تیر اپنی طرف متوجہ کریں گے. تو یہاں Binky کے ساتھ بورڈ پر، کی اگلی لائن کے ساتھ کوڈ، * Y وہاں جانے کا مطلب ہے. وہاں کہاں ہے؟ یہ یہاں کا مطلب ہے. اور ہم 13 ہو جائے کرنے کے لئے اس کو اپ ڈیٹ کریں جب یہ صرف جا رہے ہیں اور شامل ہے اب یہاں 13 لکھنے. تو شاید نہیں مکمل طور پر پہلی نظر میں براہ راست. لیکن recap اور اسی شبدجال استعمال کرنے کے لئے کہ Binky تو، یہاں کا استعمال کرتے ہوئے کیا گیا تھا پہلے دو، اشارہ مختص x اور y کیا ہے، لیکن نہیں pointees. اور pointees ایک نہیں ہے عام طور پر کی اصطلاح کا استعمال کیا. لیکن پوائنٹر بالکل ہے. لیکن اس کی طرف اشارہ کیا جا رہا ہے کیا ہے Binky کی نام میں میں. کورس کی یہ اگلی لائن،، ایک INT pointee مختص. تو میموری کا ایک حصہ - میں پر ختم کے طور پر مبذول کرائی دائیں ہاتھ کی طرف - اور سیٹ X کے برابر اس کی طرف اشارہ کرنے کے لئے. یہ dereferences ایکس میں 42 ذخیرہ کرنے کے لئے اس طرف اشارہ ہے کہ میموری. اور پھر یہ، کورس کے، ایک بری بات تھی. Y کی طرف اشارہ نہیں کیا گیا تھا کیونکہ ابھی تک کچھ نہیں ہے. یہ ٹھیک کرتا ہے. تو یہ اب بھی چھوٹی گاڑی پروگرام ہے. ہم کے ذریعے اڑا رہے ہیں صرف اس وجہ سے لائن اور کہہ کر کوڈ لائن، اوہ ٹھیک ہے، یہ وہاں کریش ہیں. یہ ایک بری بات ہے. مشکلات کے پروگرام صرف جا رہا ہے ہیں اس لائن پر مکمل طور پر گرا. آپ کو ختم کرنے کے لئے تھے لیکن اگر گر کر تباہ ہو گزشتہ دو کے ساتھ اس لائن اور کی جگہ لے لے آپ کو تفویض وہاں لائنیں - پوائنٹر تفویض کا استعمال کرتے ہوئے - Y نقطہ T کے طور پر ایکس کی طرف اشارہ کرنے کے لئے. اور اس وقت تم dereference ایک بہت محفوظ طریقے سے Y. لہذا جہاں یہ ہمیں چھوڑ کر ہے؟ ٹھیک ہے، ہڈ کے نیچے کہ باہر کر دیتا ہے CS50 لائبریری میں، اشارہ ہیں بھر میں استعمال کیا. اور ہم اصل میں چھیل کرنے کے لئے شروع کریں گے طویل عرصے سے اس سے پہلے کہ واپس پرت. لیکن یہ بھی اس کا اظہار کر دیتا ہے تم میں سے بعض، سے واقف ہو سکتا ہے خاص طور پر ان لوگوں کو زیادہ آرام دہ، ایک بہت ہی مقبول ہے کہ اصل میں ہے ویب سائٹ، یا اسٹیک اتپرواہ، ان دنوں. لیکن یہ واقعی بہت ہے تکنیکی معنی. اب ہم ایک اسٹیک کیا ہے. یہ ٹرے کی ایک اسٹیک کی طرح ہے ایک ڈائننگ ہال کے اندر. یا ان کے اندر آپ کے کمپیوٹر کی میموری ان کے فریموں اس کہ کام کرتا ہے کی طرف سے استعمال کر رہے ہیں. ٹھیک ہے، یہ پتہ چلتا ہے کہ اس کی وجہ سے کی بہت آسان عمل درآمد میموری اور نام نہاد پر فریم ڈھیر لگانا، آپ اصل میں کنٹرول لے سکتے ہیں کافی آسانی سے ایک کمپیوٹر کے نظام کی. آپ کو ایک نظام میں ہیک کر سکتا ہے اگر لوگ ہمیں ہماری کوڈ نہیں لکھا ہے جیسے خاص طور پر اچھی طرح سے. ہم جیسے لوگوں کے حصوں استعمال کرتے ہیں تو میموری یا استعمال arrays کے - اس سے بھی زیادہ عام طور پر - لیکن کبھی کبھی چیک کرنے کے لئے بھول جاتے ہیں ہمارے سرنی کی حدود آپ کو طاقت کے طور پر اپنے آپ کو کبھی کبھی ہے، اور iterated بہت دور آخر ایک سرنی ماضی راستہ. سب سے بہترین صورت میں، آپ کے پروگرام صرف کریش ہو سکتا ہے. انقطاع غلطی، قسم شرمندا کر کے. عظیم نہیں ہے، لیکن یہ ضروری نہیں ہے ایک انتہائی بری بات. لیکن آپ کے پروگرام اصلی پر اصل ہے تو صارفین کے کمپیوٹر، اسے چلا رہا ہے تو ایک ویب سائٹ پر ہے کہ اصل بے ترتیب لوگوں انٹرنیٹ پر دے، مار رہے ہو لوگوں کو آپ کے کوڈ پر بری چیزوں دلانا ہے کیونکہ عام طور پر نہیں ایک اچھی بات یہ لینے کے لئے ایک موقع کا مطلب کمپیوٹر کے کنٹرول ہے. اور یہ دیکھنے کے لئے جا رہی ہے خفیہ تھوڑا. لیکن میں آپ کے ساتھ ڈرانے سوچا یہاں یہ آخری مثال کے طور پر. یہاں کوڈ کی ایک مثال ہے. اور ایک اچھا وکی پیڈیا ہے کے ذریعے چلتا ہے کہ مضمون مزید تفصیل میں اس. میں سب سے نیچے دیئے کالنگ پر اہم ہے 1 argv میں گزر FOO،. اور یہ صرف اتنا ہے کہ آپ کر سکتے ہیں ہے پروگرام چلائیں اور گزر ایک صوابدیدی ان پٹ. اور پھر FOO اوپر کا اعلان کر دیا ہے ایک تار کو قبول، یا اس سے زیادہ کے طور پر واضح طور پر، ایک چار *. اس کے بعد یہ حروف کی ایک سرنی وانی ہے. یہ ایک بفر، زیادہ عام طور پر کال کریں سائز 12. تو 12 حروف کے اندر فٹ ہونے کے لئے کر سکتے ہیں سی کہا جاتا ہے کہ سرنی کی. اور پھر، اس نئے تقریب کا استعمال کرتا ہے نئی لیکن مشکل نہیں ہے جو ، میموری کاپی سمجھتے ہیں. یہ تھا، جو بار سے میموری نقل کرتا ہے متغیر ماضی (ن)، جو بھی صارف C میں argv 1 میں ٹائپ. کتنے بائٹس؟ بار کے سٹرنگ کی لمبائی. تو دوسرے الفاظ میں، صارف کی اقسام اگر میں H-ای L-L-O داخل کریں، سٹرنگ کی لمبائی ہیلو پانچ ہے. تو ان لوگوں بائٹس کی پانچ حاصل کرنے کے لئے جا رہی ہے ج بلایا سرنی میں کاپی کیا جس سائز 12 ہے. ایک بہت طویل میں لیکن جو صارف کی اقسام 13 حروف یا 14 ہے کہ لفظ حروف یا 100 سے کم حروف یا اس سے زیادہ؟ وہ کہاں جانے والے ہیں؟ خیر، یہ فریم، جو ٹرے ڈائننگ ہال-اسٹیک میں، وہ وہاں جانے کے لئے جا رہے ہیں. اور یہ صرف overwriting شروع کرنے کے لئے جا رہا ہے پہلے سے ہی ہے کہ دوسرے چیزیں کہ اسٹیک پر، overflowing اسٹیک، تو بات کرنے کے لئے. تو pictorially، یہ اس طرح کے بارے میں سوچنا. یہ صرف ایک رنگین ورژن ہے تصویر ہم ڈرائنگ کر رہا ہوں. کے نیچے دیے گئے، اہم ہے، کا کہنا ہے کہ ہیں. اور سب سے اوپر پر، اب تم کیا دیکھ رہے ہیں فریم، رنگ ایک کے لئے، اب کوڈت ہے FOO ملاقات کی تقریب. لیکن یہاں کے بارے میں دلچسپ کیا ہے FOO یہاں اس کے فریم ہے. تو یہ صرف میں طرح تیار ہے لیکن ہلکے نیلے رنگ میں کیا تھا. اور اب یہ کہاں ہے ج بریکٹ 0 جاتا ہے. اور یہ سی بریکٹ ہے کہاں 11 کو ختم کرنے کے لئے جا رہی ہے. دوسرے الفاظ میں، اس کے ساتھ کیا ہوتا ہے ایک مربع کے طور پر کی نمائندگی کی جائے. لیکن آپ نے ابھی بائٹس plopping رہے تو نیچے - یا حروف - وہ ختم کرنے کے لئے جا رہے ہیں اپ مقام پر 0 تمام راستے 11 کیونکہ اس حساب سے ترتیب 0 ہے. لیکن 13th کردار کہاں ہے کو ختم کرنے کے لئے جا رہے ہیں؟ 14th کہاں ہیں؟ 50th کردار کہاں ہے کو ختم کرنے کے لئے جا رہے ہیں؟ یہ نیچے جا رہا رکھنے کے لئے جا رہا ہے. ہم تیار ہے اگرچہ کیونکہ اسٹیک کے ساتھ تصویر، بڑے پتے، یہ باہر کر دیتا ہے، کی طرف سے جانا چھوٹے پتے، چھوٹے بڑے پتوں کے اشارہ،. تو یہ صرف اوپر جا رہا اور تازہ رکھتا ہے. تو اگر میں صارف کی اقسام ہیلو، یہ بہت اچھا ہے. کوئی بگ، کوئی مسئلہ نہیں، ہر شخص کی محفوظ. لیکن ہم کیا کریں گے میں صارف اقسام اگر معاندانہ کوڈ کال، کی نمائندگی generically کے طور پر ایک، حملہ، حملے، حملے، حملہ، کیا ہو سکتا ہے؟ ٹھیک ہے، اگر ان پٹ کے تمام اس صارف میں ٹائپ صرف کچھ دوستانہ نہیں ہے حروف یا جارحانہ سٹرنگ. یہ اصل میں حروف کی ایک ہی تسلسل ہے کہ تم نے اسے مرتب کیا ہے تو، یہ اصل میں کوڈ ہے. شاید یہ کوڈ ہے کہ اخراج تمام آپ کی ہارڈ ڈرائیو پر فائلوں یا غیر متعلقہ بھیجتا ہے اس طرح یا کچھ اور. کلیدی یہاں کیا ہے یہ نوٹس ہے کہ برا آدمی کے لئے کافی خوش قسمت مل گیا تو میموری کی سرخ ٹکڑا ادلیکھت - میں لیکن میری تصویر پر اپنی طرف متوجہ نہیں کیا جس یہاں اس وکی پیڈیا تصویر ہے - اس کے نام نہاد واپسی ایڈریس. جب کھانے کی واپسی، سویپ کی واپسی، جب کس طرح کمپیوٹر سے جانا معلوم ہوتا ہے کہ یہاں یہاں نیچے ہے؟ یا اوپر ٹیک کے علاقے میں، کس طرح یہ تبادلہ سے جانا معلوم ہوتا ہے کہ کوڈ - 0 اور 1 کی کہ سویپ تحریر کریں - واپس اہم ہے؟ ایک نام نہاد واپسی ایڈریس ہے اسی اسٹیک فریم میں، پر ذخیرہ اسی کیفیٹیریا ٹرے. برا آدمی کے لئے کافی ہوشیار ہے اگر ایسا ہے تو حملے کوڈ ڈال دیا، حملے کے کوڈ، حملے کوڈ، اور کافی خوش قسمت ملے - پر - اکثر مقدمے کی سماعت اور غلطی کے ذریعے ، وہ لال واپسی ایڈریس ادلیکھت ایڈریس اور نوٹس کے ساتھ سب سے اوپر. 0835C080 نوٹس. اس کے لئے پیچھے کی طرف اپ کے اوپر لکھا ہوا ہے وجوہات کی بناء پر ہم شاید نظرثانی کریں گے. یہ وہ نمبر ہے. برا آدمی کافی خوش قسمت ہے یا ہو جاتا ہے اگر ایسا ہے تو سرخ ادلیکھت کرنے کے لئے کافی ہوشیار ہے کے ایڈریس کے ساتھ میموری کی پٹی وہ یا وہ کسی نہ کسی طرح ہے کہ کوڈ آپ کے کمپیوٹر میں انجکشن، جس کا اندازہ کوڈ کو واپس جا رہا ہے جیسے ہی FOO کے طور پر عمل کیا جاتا ہے؟ برے آدمی کے کوڈ. اس حملے کوڈ لہذا، AAA، پھر سے، شاید سپیم بھیجنے کے، تمام فائلوں کو حذف کر سکتے ہیں آپ کی ہارڈ ڈرائیو پر. لیکن یہ کیا واقعی ایک اسٹیک اتپرواہ ہے ہے، یا ایک بفر overrun، یا ایک اتپرواہ حملے بفر. اور یہ ناقابل یقین حد تک، ناقابل یقین حد تک عام ہے میں لکھا پروگراموں کے ساتھ اس دن پر C، C + +، اور یہاں تک کہ بعض دیگر زبانوں میں. کہ ڈراونا نوٹ پر، ہم دیں گے مذاق کے ساتھ ختم. [ہنسی] بدھ کے روز ملتے ہیں. اگلے CS50 میں - تو میں آج ڈسک لیمپ کے تمام باہر ہوں لیکن انتظار، چکنائی سے پاک دودھ، نصف فون کتاب، اورینج کا رس آج میں نے پیا ہے. USB کیبل، ایک رنچ. [موسیقی بجانے]