DAVID MALAN: خوش، اور CS50 واپس کا خیر مقدم. اس لیے اس ہفتے کے اختتام پر چار ہے. سب سے پہلے صرف ایک اعلان. ہے نام نہاد پانچویں پیر تو اس آنے والے پیر کو آ رہا. اس سے تبدیل کرنے کے لئے موقع ہے ایک خط گریڈ / UNSAT SAT، یا کی طرف سے خط گریڈ / UNSAT بیٹھی. Annoyingly، اس عمل کو ایک کی ضرورت ہوتی ہے آپ کو بھرنے کی ضرورت ہے دستخط، کیونکہ ان گلابی شامل کریں / ڈراپ فارم میں سے ایک باہر. کیونکہ تکنیکی طور پر، سیٹ / UNSAT ورژن اور خط گریڈ ورژن واضح کیٹلوگ تعداد ہے. لیکن کوئی بڑی بات نہیں. بس میری آئے یا لوٹنے کے لئے یا کسی بھی موڑ پر لارین کرنے کے لئے. تم قسم کی ضرورت نہیں ہے یا اگر ہمیں ای میل کاغذی کارروائی کے آپ آج کی ضرورت ہے، اور ہم آپ کو لینے میں مدد کے لئے اس بات کا یقین ہو جائے گا پیر کے روز اس سے پہلے کہ اس کی دیکھ بھال. ٹھیک ہے، تو آج - اصل میں، ایک گونج کے تھوڑا سا ہے. ہم سر مجھے نیچے تھوڑا کر سکتے ہیں؟ ٹھیک ہے. آج تو، ہم ایک موضوع کو متعارف کرانے اشارہ کے طور پر جانا جاتا ہے. اور مجھے اس میں سے ایک ہے یہ تسلیم کریں گے ہم دیتے ہیں کہ زیادہ پیچیدہ موضوعات اس کلاس میں احاطہ کرتا ہے، یا واقعی کسی بھی سی کا استعمال کرتا ہے کہ تعارفی کورس لیکن خاص طور پر، اس کے لئے میرے لفظ لے آپ کے دماغ تھوڑا سا زیادہ مڑی ہوئی محسوس کرتا ہے تو آج اور ہفتوں میں آنے کے لئے. یہ آپ کو حاصل کرنے کا نمائندہ نہیں ہے اس کو کسی بھی بدتر یہ صرف کا مطلب ہے کہ یہ ایک خاص طور پر پیچیدہ موضوع ہے میں وعدہ کرتی ہوں کہ چند ہفتے اس وجہ سے، بہت strikingly لگے گا ماضی میں براہ راست. میں اب بھی اس دن کے لئے یاد ہے. میں، ایلیٹ ڈائننگ ہال میں بیٹھا تھا میری TF نشاط مہتا کے لئے اگلے بیٹھے، ایلیٹ گھر کے ایک رہائشی جو تھا. اور کسی وجہ سے، یہ موضوع صرف کلک کرتا ہے. جس میں بھی جدوجہد کا کہنا ہے کہ کرنے کے لئے ہے وقت کی کچھ رقم کے لئے اسے، لیکن میں کے ساتھ ایسی کسی سے بچنے کے لئے مدد کرنے کے لئے اپنی پوری کوشش کروں گا ایک موضوع کے ساتھ کہ بالآخر جدوجہد کافی طاقتور ہے. اصل میں، موضوعات میں سے ایک ہم بات کریں گے آنے والے ہفتوں میں یہ ہے کہ کی سیکورٹی، اور کس طرح آپ نے واقعی کر سکتے ہیں طریقوں سے فائدہ اٹھانے کی مشینیں اس کا ارادہ نہیں تھا. اور ان exploitations عام طور پر کر رہے ہیں کیڑے، غلطیوں کا نتیجہ ہے کہ ہم لوگوں کو کچھ سمجھ نہیں سے بنانا بنیادی عمل کا تفصیلات جس کے ذریعے پروگراموں کے بنائے جاتے ہیں. اب اس بنانے کے لئے سب سے زیادہ صارف لگتے ہیں دوستانہ، میں نے ایک 10 کھیلنے سوچا تھوڑا claymation کی دوسری پیش نظارہ کرنے کے لئے لایا گیا تھا جو Binky نامی کے اعداد و شمار سٹینفورڈ میں ہمارا ایک دوست کی طرف سے زندگی، پروفیسر نک Parlante. تو مجھے آپ کو یہ دینے کے لئے کی اجازت دیتے ہیں یہاں Binky کی جھلکی. [ویڈیو پلے بیک] -ارے، Binky. اٹھو. یہ پوائنٹر تفریح ​​کے لئے وقت ہے. کیا ہے؟ اشارہ کے بارے میں جانیں؟ اوہ، goodie. [END ویڈیو پلے بیک] DAVID MALAN: سٹینفورڈ ہے کمپیوٹر سائنس. تو زیادہ اس پر آنے کے لئے. [تالیاں] DAVID MALAN: معذرت، نک. تو ہم کو ختم ہو گئی ہے کہ آخری بار یاد یہ واقعی دلچسپ cliffhanger جس کے تحت اس تقریب صرف کام نہیں کیا. کم از کم intuitively، یہ محسوس کیا اس طرح کام کرنا چاہئے. بس اقدار گماگمن دو integers کے. لیکن یاد ہے کہ ہم باہر طباعت اہم، ایک اور میں اصل اقدار دو، وہ اب بھی ایک تھے اور دو اور نہ دو اور ایک. تو مجھے اصل میں سوئچ دو سے زیادہ آلات پر. اور میں میں کنکال کوڈ کا تھوڑا سا اپ نے لکھا میں دعوی کرتے ہیں، جہاں یہاں کو آگے بڑھانے کے کہ ایکس 1 ہو جائے گا، Y 2 ہو جائے گا. میں نے تو ان دونوں کو باہر پرنٹ پرنٹ F ساتھ اقدار. میں پھر یہاں نیچے کا دعوی ہے کہ ہم ان کا تبادلہ کرنے کے لئے جا رہے ہیں. میں ہمارے لئے کے لئے یہاں ایک خالی جگہ چھوڑ دیا ایک پل میں آج درج کریں. اس کے بعد، میں نے کا دعوی کرنے جا رہا ہوں کہ دو متغیر تبدیل کر دیا گیا ہے. پھر میں پرنٹ کرنے کے لئے جا رہا ہوں پھر انہیں باہر. اور اس لئے امید ہے کہ، میں، 2 1 دیکھنا چاہیئے. 2، 1. سپر آسان ہے ابھی مقصد. تو ہم گماگمن کے بارے میں کس طرح جانا ہے دو متغیر؟ میں یہاں تجویز ٹھیک ہے کہ اگر ان کپ ایک کمپیوٹر میں میموری کی نمائندگی کرتے ہیں ہو سکتا ہے. یہ، چند کاٹنے ہے ایک اور چند کاٹنے ہے. ہم ایک رضاکار اور تازہ پر آ سکتا تھا واقف تو ہمیں کچھ مشروبات ملا؟ اپ چلو. آپ کا نام کیا ہے؟ JESS: جیس. DAVID MALAN: جیس؟ ، اپ پر جیس آو. آپ برا نہ مانے تو ہم ڈال کرنے کی ضرورت آپ پر گوگل گلاس تو ہم کر سکتے ہیں اس امر. ٹھیک ہے، گلاس. ایک ویڈیو ریکارڈ کریں. اور ٹھیک ہے، ہم اچھے ہیں یہاں جیس کے ساتھ جاؤ. ٹھیک ہے. آپ سے مل کر اچھا لگا. تو میں چاہوں گا تم یہاں کیا - بہت جلد، آپ کر سکتا ہے تو - صرف ہمیں سنتری کے نصف ایک گلاس pours رس اور دودھ کی نصف ایک گلاس، مؤثر طریقے سے کی تعداد 1 کی نمائندگی دیگر کپ میں ایک کپ اور 2 میں. یہ اچھی فوٹیج بننے جا رہی ہے. JESS: معاف کیجئے گا. DAVID MALAN: نہیں، نہیں. یہ ٹھیک ہے. اچھا. ٹھیک ہے، تو ہم چار بائٹس ہے سنتری کا رس کی قیمت. ہم اس کی قیمت 1 بلایا گے. اب دودھ کی قیمت میں ایک اور چار بائٹس. یہ 2 کی قدر فون کروں گا. بالترتیب، x اور y کیا تو. ٹھیک ہے، تو اب ہاتھ میں کام تو - سب کے سامنے آپ کے لئے، جیس، اپنے ہم جماعتوں کے - X اور Y ایسے کی اقدار کا تبادلہ کرنے کے لئے ہے ہم میں سنتری کا رس چاہتے ہیں دیگر کپ اور اس کپ میں دودھ، کس طرح آپ سکتا ہے - اگر آپ واقعی کرنے سے پہلے یہ - ایسا کرنے کے بارے میں جانا ہے؟ ٹھیک ہے، فیصلہ بڑی حکمت والا ہے تو کیا تم تھوڑا سا زیادہ میموری کی ضرورت ہے. تو اس کی ایک عارضی مختص دو کپ، اگر آپ. اور اب X اور Y تبادلہ کرنے کے لئے آگے بڑھنے. بہترین. تو بہت اچھا کیا. ، اتنا جیس آپ کا شکریہ. تم یہاں ہو. ایک چھوٹی سی نشانی. ٹھیک ہے، تو ظاہر ہے، سپر آسان ترکیب. ہم تھوڑا سا کی ضرورت ہے کہ مکمل طور پر بدیہی زیادہ سٹوریج کی جگہ - اس فارم میں، ایک کپ - ہم واقعی چاہتے ہیں تو ان دو متغیر تبادلہ. تو بالکل ایسا ہیں. یہاں میں ہوں دعوی جہاں درمیان میں کچھ گماگمن کر جا رہا، میں کروں گا آگے بڑھو اور TEMP کا اعلان. اور میں ایکس، کا کہنا ہے کہ، یہ برابر قائم کریں گے. پھر میں کی قدر تبدیل کرنے کے لئے جا رہا ہوں صرف جیس طرح ایکس کے ساتھ یہاں کیا دودھ اور سنتری کا رس Y برابر ہو. اور میں برابر Y تبدیل کرنے کے لئے جا رہا ہوں اب ہم ہوں گے نہ کرنے کی وجہ سے X، ایک دائرے کی مانند میں پھنس گیا، بلکہ TEMP. کہاں میں عارضی طور پر - یا جہاں جیس عارضی طور پر سنتری کا رس ڈال کہ clobbering سے پہلے دودھ کے ساتھ ایک کپ. تو مجھے اب آگے بڑھو اور اس کے بنانے کے لئے ہیں. یہ noswap.c کہا جاتا ہے. اور اب مجھے کوئی تبادلہ چلاتے ہیں. میں وسعت اور اگر واقعی میں دیکھ کر، ونڈو تھوڑا سا، کہ X 1 ہے، Y 2 ہے. اور پھر ایکس 2 ہے، Y 1 ہے. لیکن پیر کو ہم نے جو چیزیں یاد تھوڑا سا مختلف جس میں اس کے بجائے، ایک مددگار عملدرآمد تقریب اگر آپ، کہ اصل میں صفر تھا. میں نے اس کے تبادلہ سے ملاقات کی. میں نے یہ دو اجزاء کو دیا، اور میں نے فون کیا انہیں ایک اور میں ان ب سے ملاقات کی. سچ کہوں تو، میں نے ان X اور Y کو فون کر سکتے ہیں. کو روکنے کی کوئی بات نہیں ہے ایسا کرنے سے. لیکن میں اس وقت ہے بحث کریں گے تھوڑا سا مبہم. کیونکہ پیر کے روز کے لئے یاد ہے کہ ہم ان پیرامیٹرز تھے نے دعوی کیا کہ اقدار کی کاپیاں رکنیت منظور آپ کے ساتھ تو یہ صرف messes ذہن، مجھے لگتا ہے، آپ کو استعمال کرتے ہیں تو بالکل ویسی ہی متغیر. تو میں نے اس کے بجائے انہیں ایک فون کروں گا اور ب، صرف وضاحت کے لئے. لیکن ہم ان سب سے کہہ سکتے ہیں ہم چاہتے ہیں کچھ. اور میں کاپی اور چسپاں کرنے کے لئے جا رہا ہوں وہاں کی طرف سے مؤثر طریقے سے اس کوڈ یہاں میں نیچے. میں نے صرف یہ کام کرتا دیکھا کہ وجہ سے. تو یہ بہت اچھی حالت میں ہے. اور میں، میری X کرنے کے لئے میری X تبدیل کر دیں گے ایک کے لئے، ب اور ب کرنے کے لئے میری Y کرنے کے لئے میری Y. تو دوسرے الفاظ میں، عین مطابق ایک ہی منطق. جیس نے عین مطابق ایک ہی بات. اور پھر میں نے کیا کرنا ہے ایک بات یہاں، کورس کے، اب یہ پکارتے ہے تقریب میں، یا اس تقریب کو فون کریں. تو میں نے دونوں کے ساتھ اس تقریب میں فون کروں گا نیوجیان، x اور y کیا، اور ہٹ کو محفوظ کریں. ٹھیک ہے، تو بنیادی طور پر ایک ہی بات. اصل میں، میں شاید پروگرام بنایا ہے کی طرف سے بیکار میں پیچیدہ صرف لے جا رہا ہے کہ ایک تقریب لکھنا کوڈ کے کچھ چھ لائنوں جبکہ میں پہلے نافذ کیا تھا یہ صرف تین میں. تو مجھے اب آگے بڑھو اور ریمیک دو یہ، کوئی تبادلہ کرتے ہیں. ٹھیک ہے، میں یہاں مصیبت میں. یہ ایک غلطی ہونی چاہیے آپ کو ہو سکتا ہے آپ کے طور پر تیزی سے عام طور پر دیکھتے ہیں پروگراموں زیادہ پیچیدہ ہو جاتے ہیں. لیکن ایک آسان حل ہے. مجھے یہاں واپس سکرال ہیں. اور میں دیکھ رہا ہوں پہلے غلطی کیا ہے؟ ضمنی اعلان. جو کہ عام طور پر کیا اس بات کی نشاندہی کرتا ہے؟ اوہ، میں پروٹوٹائپ بھول گیا. میں سنکلک سکھانے کے لئے بھول گیا تھا کہ تبادلہ موجود جا رہا ہے اگرچہ وہ بہت شروع میں کوئی وجود نہیں پروگرام کی. تو میں صرف، صفر، سویپ کہنے جا رہا ہوں INT، ایک INT ب، نیم وقفہ. تو میں نے اسے reimplement نہیں جا رہا ہوں. لیکن اب یہ کیا یہاں نیچے ہے سے میل کھاتا ہے. اور نوٹس، ایک نیم وقفہ کی غیر موجودگی یہاں، جو ضروری نہیں ہے جب پر عمل درآمد. تو مجھے یہ ریمیک دو، کوئی تبادلہ کرتے ہیں. بہت بہتر شکل. کوئی سویپ چلائیں. اور یہ لات ہے. ہم پیر کو کہاں تھے اب ہم واپس آ گئے ہیں جہاں چیز تبادلہ نہیں کیا. اور بدیہی وضاحت کیا ہے کیوں کے لئے اس کیس ہے؟ جی ہاں؟ طالب: [اشراوی]. DAVID MALAN: بالکل درست. تو a اور b X اور Y کی کاپیاں ہیں. اور حقیقت میں کسی بھی وقت آپ کو رہا ہوں ابھی تک ہے کہ ایک تقریب بلا ints طرح متغیرات میں گزر جاتا ہے - سویپ یہاں انتظار کر رہا ہے جیسا کہ - آپ لوگ کاپیاں میں گزر گیا ہے. یہ تھوڑا سا لے جاتا ہے کا مطلب ہے کہ اب وہ کے لئے وقت کی ایک تقسیم دوسری، ایک سے بٹس کاپی کرنے کے لئے کمپیوٹر کسی دوسرے کی بٹس میں متغیر. لیکن یہ اتنا بڑا سودا نہیں ہے. لیکن وہ باوجود ایک کاپی ہو. اور اس طرح اب، سویپ کے تناظر میں، میں نے کامیابی کے ساتھ حقیقت یہ ہے کہ میں ہوں A اور B کو تبدیل کرنے. اصل میں، ایک فوری کرتے ہیں وویک چیک کریں. پرنٹ چ ایک میں نئی ​​لائن فیصد ہے. اور ایک میں لشکر طیبہ کی پلگ. اب ب کے ساتھ ایک ہی بات کرتے ہیں. اور یہاں ایک ہی بات کرتے ہیں. اور اب، مجھے وہ اسی لائنز کی کاپی کرتے ہیں پھر تقریب کے نچلے حصے میں دلچسپ میرے تین لائنوں کے بعد پھانسی، اور کر سکتا تھا ایک بار پھر ایک اور ب پرنٹ. کی اس بنا تو اب دو، کوئی تبادلہ کرتے ہیں. مجھے ٹرمنل ونڈو ایک کرنے دو تھوڑا طویل ہے، ہم دیکھ سکتے ہیں تاکہ ایک بار میں اس کے زیادہ. اور کوئی سویپ چلائیں. X 1 ہے، Y 2 ہے. ایک 1 ہے، بی 2 ہے. اور پھر، ایک 2 ہے، ب 1 ہے. تو یہ صرف جیس کی طرح کام کر رہا ہے یہاں اندر سویپ کے کیا. لیکن کورس کے، یہ کوئی اثر نہیں رہا ہے اہم میں متغیر پر. تو ہم نے ایک ٹرک کو دیکھا جس کے تحت ہم ٹھیک ہے، یہ طے کر سکتا ہے؟ اگر آپ کو یہ scoping کا سامنا کر رہے ہیں تو مسئلہ، آپ کر سکتے صرف پنٹ اور ایکس بنانا اور y کس قسم کی بجائے متغیر؟ آپ کو ان کے عالمی سطح پر کر سکتے ہیں. فائل کے بہت سے اوپر دیئے گئے ان کے رکھو ہم نے بھی 15 کے کھیل میں، کے طور پر کیا تھا. ہم ایک عالمی متغیر استعمال کرتے ہیں. لیکن کھیل ایک 15 کے تناظر میں، یہ ایک عالمی کرنا مناسب ہے ، بورڈ کی نمائندگی کرنے والے متغیر کی وجہ 15.c کی مکمل ہے اس کھیل کو لاگو کرنے کے بارے میں. یہ فائل کرنے کے لئے موجود ہے. لیکن یہاں اس معاملے میں، میں ہوں ایک تقریب سویپ بلا. میں نے دو متغیر تبادلہ کرنا چاہتے ہیں. اور یہ میلا محسوس کرنے کے لئے شروع کر دینا چاہئے اگر ہمارے سب کا حل ہم گنجائش میں چلاتے ہیں جب مسائل مسائل کا عالمی سطح پر بنا ہے. بہت جلد ہمارے پروگرام ہے کیونکہ کافی گندگی بننے جا. اور ہم بہت کفایت کیا 15.c. میں ایک نتیجہ کے طور پر ایک ہے لیکن یہ باہر کر دیتا ہے مکمل طور پر بہتر طریقہ. مجھے اصل میں واپس جانا اور حذف کرتے ہیں بس اس کوڈ کو آسان بنانے، F کی پرنٹ. اور مجھ سے تجویز کرتے ہیں کہ اس، بے شک، خراب ہے. لیکن میں نے اس کے بجائے کچھ ستارے میں شامل تو اور ستاروں، میں بجائے اس کے تبدیل کر سکتے ہیں ہے کہ ایک میں تقریب اصل میں آپریشنل. تو مجھے یہاں واپس جا کر کہہ تسلیم کرتے ہیں ستارے، ہمیشہ مشکل ہے تو میں نے ستاروں کو کہیں گے. میں صرف اس ایک تک fess گے. ٹھیک ہے. اور اب، کیا میں جا رہا ہوں اس کی بجائے ایسا کرنے کی؟ سب سے پہلے تو، میں وضاحت کرنے کے لئے جا رہا ہوں اس کی بجائے میں ایک INT گزرنے کے سویپ تقریب، میں بجائے ہوں INT اسٹار کا کہنا ہے کہ جانے کا. اب، اسٹار کیا اس بات کی نشاندہی کرتا ہے؟ یہ کہ ایک پوائنٹر کے اس تصور ہے Binky، claymation کردار تھا، پہلے ایک لمحے کا حوالہ دیتے ہوئے. ہم INT ستارہ، کے معنی کا کہنا ہے کہ اگر ایسا ہے تو یہ اب ایک بننے کے لئے نہیں جا رہا ہے ہے کہ اس کی قیمت کی طرف سے میں منظور. یہ رکنیت کاپی کرنے کے لئے نہیں جا رہا ہے بلکہ، ایک کا پتہ ہے رکنیت منظور کیا جا رہا تو آپ کے کمپیوٹر کے اس کے اندر یاد دوسری صورت میں، میموری کے پورے گچرچھی ہے ریم کے طور پر جانا جاتا ہے. اور یہ کہ رام صرف ایک ہے بائٹس کی پورے گچرچھی. اپنے میک یا اپنے کمپیوٹر کی ہے اگر ایسا ہے تو دو گیگا بائٹ، آپ 2 ہے میموری ارب بائٹس. اب صرف فرض کرتے ہیں کہ صرف چیزوں کو اچھا اور منظم رکھنے کے لئے، ہم ایک ایڈریس تفویض - ایک بڑی تعداد - آپ کے کمپیوٹر میں رام کے ہر بائٹ کرنے کے لئے. ان 2 کے پہلے بائٹ ارب تعداد صفر ہے. اگلے ایک بائٹ نمبر ایک، نمبر ہے اپ پر دو، پورے راستے، ڈاٹ ڈاٹ تقریبا 2 ارب ڈاٹ،. تو کیا تم بائٹس کی تعداد میں کر سکتے ہیں آپ کے کمپیوٹر میں میموری کی. تو یہ ہے کہ فرض کی دو کیا ہم ایک ایڈریس کی طرف سے مطلب ہے. تو میں کیا ہو رہا ہے INT ستارہ ایک، دیکھ کر اب تبادلہ میں منظور کیا جانا ہے ایک کا پتہ. نہیں اس کی قیمت، لیکن جو کچھ بھی اس کی پوسٹل ایڈریس، تو بات کرنے ہے - RAM میں اس کی جگہ. اور اسی طرح ب کے لئے، میں جا رہا ہوں ایک ہی بات کہنا. INT، ستارہ، ب. ایک طرف، تکنیکی طور پر سٹار کے طور پر دیگر مقامات پر ہو سکتی ہے. لیکن ہم ہونے کی وجہ سے سٹار پر معیاری گے ڈیٹا کی قسم کا حق اگلے. تو دستخط کا مطلب اب تبادلہ، مجھے دو ایک INT کا پتہ، اور کال اس ایڈریس کے لیے. اور مجھ سے ایک کے ایک اور پتہ دے INT اور اس ایڈریس ب کہتے ہیں. لیکن اب یہاں اپنے کوڈ کو تبدیل کرنے کی ہے. کیونکہ میں INT TEMP کا اعلان تو - کس قسم کا INT اب بھی ہے - لیکن میں، یہ ایک میں جمع قیمت کس طرح؟ واضح رہنا، میں کے ساتھ ایک ایک ڈال رہا ہوں ابھی تحریری طور پر کوڈ؟ میں ایک محل میں ڈال رہا ہوں. لیکن مجھے پرواہ نہیں کرتے محل وقوع اب، ہے نا؟ TEMP صرف جیس 'تیسری کپ موجود ہے موجود، کیا مقصد کے لئے؟ قدر ذخیرہ کرنے کے لئے. دودھ یا سنتری کا رس. اصل کا پتہ ذخیرہ کرنے کے لئے نہیں ان چیزوں میں سے کسی، جس کی وجہ سے محسوس ہوتا ہے یہ اصل میں بہت کم nonsensical ویسے بھی دنیا کے سیاق و سباق. تو واقعی میں، کیا میں TEMP میں ڈال کرنا چاہتے ہیں ایک کا پتہ، لیکن نہیں ہے ایک کے مندرجات. ایک 123 کی طرح ایک نمبر ہے اگر ہاں، تو ہے اس میموری کے 123rd بائٹ ایک منصفانہ ، قابض ہونا ہوتا ہے اس قدر میں ایک قابض ہونا ہوتا ہے. ، میں نے اس کا پتہ کرنے کے لئے جانا چاہتے ہیں تو میں ستارہ ایک کا کہنا ہے کہ کرنے کی ضرورت ہے. اسی طرح، تو میں کیا تبدیل کرنے کے لئے تھے ایڈریس میں، میں تبدیل یہ شروع کرنے کے لئے. میں میں کیا ہے میں جمع کرنا چاہتے ہیں تو مقام پر کیا ہے کے ساتھ جگہ ب میں، ستارہ ب ستارہ. یہ کافی نہیں ہے مختصر میں، یہاں تک کہ اگر ابھی میں ڈوب - اور مجھے توقع نہیں کریں گے یہ اتنی جلدی گی - میں کر رہا ہوں تمام prefixing ہے کہ یہ میرے متغیر پر ستاروں، کہاوت اقدار پر قبضہ نہیں ہے. اقدار کو تبدیل نہ کریں. بلکہ، ان کے پتوں کے لئے جانا اور قیمت حاصل کریں. اس ایڈریس اور تبدیلی کو دیکھیے وہاں قیمت. تو اب، مجھے سب سے اوپر پر واپس سکرال دو صرف کرنے کے لئے، یہاں اس لائن کو ٹھیک کرنے ملنے کے لئے پروٹوٹائپ کو تبدیل. لیکن اب میں ایک اور چیز کرنے کی ضرورت ہے. Intuitively، میں قسم کے تبدیل کیا ہے تو دلائل کی ہے کہ تبادلہ کی توقع ہے، مجھے اور کیا کرنے کی ضرورت ہے اپنے کوڈ میں تبدیل؟ میں تبادلہ فون جب. اب، کیا ہوں کیونکہ میں اب بھی تبادلہ کرنے کے لئے گزر رہا؟ قدر X اور Y کی قدر، یا دودھ اور سنتری کا رس. لیکن میں ایسا نہیں کرنا چاہتا. میں نے اس کے بجائے کیا میں منتقل کرنا چاہتے ہیں؟ X کے محل وقوع اور Y کے محل وقوع. ان کے ای میل کے پتے، کیا ہیں تو بات کرنے کے لئے. تو ایسا کرنے کے لئے، ایک ایمپرسینڈ ہے. پتے کی طرح آواز کے ایمپرسینڈ قسم. تو (ن)، ایمپرسینڈ، پتہ کی ایکس، اور y کا ایڈریس. تو یہ ہم استعمال کرتے ہیں کہ جان بوجھ کر ہے ampersands تقریب بلا جب، اور ستارے قرار دیا اور جب جب تقریب کو لاگو کرنے کے. کے طور پر اور صرف ایمپرسینڈ کے بارے میں سوچنا آپریٹر کا پتہ، اور کے طور پر ستارہ آپریٹر وہاں جانا - یا، زیادہ مناسب طریقے سے، dereference آپریٹر. اس لیے کہ صرف الفاظ کی ایک پوری بہت ہے اب، امید ہے کہ، تبادلہ جا رہی ہے کا کہنا ہے کہ درست ہو. مجھ سے آگے بڑھو اور بنا دو - کہیں ایسا نہ ہو، کی اصل فائل کا نام تبدیل کرتے ہیں اس پروگرام کو اب بھی کوئی تبدیل بلایا جائے. میرے خیال میں ہمیں اب یہ swap.c فون کروں گا دعوی ہے کہ. تو تبادلہ، بناتے ہیں. ڈاٹ، سلیش، تبادلہ. اور اب یقینا، X 1 ہے، Y 2 ہے. اور پھر، X 2 ہے، Y سے ایک ہے. ویسے ہم یہ نہیں کر سکتے تو دیکھتے ہیں کیا ہے کے طور پر مختلف طریقے سے تھوڑا سا یہاں کیا ہو رہا. سب سے پہلے، مجھے ہمارے پر میں زوم دو یہاں سکرین ڈرائنگ. اور مجھے ایک لمحے کے لئے تجویز کرتے ہیں - اور میں یہاں اپنی طرف متوجہ جب بھی منعکس کیا جائے گا وہاں اب - مجھے تجویز کرتے ہیں کہ یہاں میموری کے پورے گچرچھی ہے، یا رام، میرے کمپیوٹر کے اندر. اور یہ، کاٹنے تعداد ہو جائے گا ، کی کا کہنا ہے کہ 1 ہیں. یہ بائٹس کی تعداد 2 ہو جائے گا. اور میں نے ایک پورے گچرچھی کرتے ہیں، اور ہوں گے پھر ڈاٹ ڈاٹ بندیاں کے ایک گروپ 2 ارب ہے ظاہر ہوتا ہے کہ ان چیزوں میں سے. 4، 5، اور تو آگے. تو پہلے پانچ رائج ہیں میرے کمپیوٹر کی میموری کی. ٹھیک ہے؟ 2 ارب سے باہر بہت کم. لیکن اب میں تجویز کرنے جا رہا ہوں مندرجہ ذیل. میں نے ایکس جا رہا ہے کہ تجویز کرنے جا رہا ہوں نمبر 1 سٹور، اور y جا رہا ہے نمبر 2 ذخیرہ کرنے کے لئے. اور مجھے اب آگے بڑھو اور کی نمائندگی کرتے ہیں ان اقدار کے طور پر مندرجہ ذیل ہے. مندرجہ ذیل ایسا چلو. مجھے صرف ایک دوسرے کو دے دو. ایک سیکینڈ. ٹھیک ہے. میں نے یہ ایک چھوٹا سا بنانا چاہتے ہیں - پھر سے یہ کرتے ہیں. ورنہ میں جا اور استعمال کر رہا ہوں اسی نمبرز، غیر ارادی طور پر، کئی بار. تو صرف اس لئے ہم مختلف نمبر ہیں کے بارے میں بات کرنے کے لئے، ہم اس بائٹ فون نمبر 123، 124، 125، 126، اور نقطہ نقطہ نقطہ. میرے اور میں کرنے جا رہا ہوں کہ اب کا دعوی کرتے ہیں یہاں قیمت 1، اور قیمت 2 ڈال یہاں، دوسری صورت میں x اور y کیا کے طور پر جانا جاتا ہے. تو یہ صرف اس لئے ایسا ہوتا ہے اس ایکس ہے، یہ y کیا ہے. اور صرف کچھ بے ترتیب موقع کی طرف سے، کمپیوٹر، آپریٹنگ سسٹم، جگہ پر X ڈال دیا ہوا نمبر 123. اور y محل 124 میں ختم ہوا - اوہ. میں نے یہ طے کرنا چاہیے تھا. آدمی اوہ، میں واقعی ایسا کرنا چاہتے ہیں؟ جی ہاں، میں یہ اور ٹھیک کرنے کے لئے چاہتے ہیں یہ آج کے بارے میں مناسب ب. افسوس ہے، اس میں نئے. 127، 131، اور مجھے یہ ہو نہیں کرنا چاہتے تھے پیچیدہ، لیکن میں کیوں تبدیل کر دیا وہاں کی تعداد؟ میں ints کرنا چاہتے ہیں کیونکہ اصل میں چار رائج ہو. تو اس کے بارے میں سپر مقعد رہنے دو اگر 1 سے خطاب کیا ہو تو وہ 123، 2 ایڈریس پر بننے جا رہی ہے یہ صرف 4 byes دور ہے 127 کی وجہ سے. بس اتنا ہی. اور ہم سب کے بارے میں بھول جاؤ گے دنیا میں دوسرے پتے. تو X، محل وقوع کی 123 میں ہے Y محل 127 پر ہے. اور اب، میں اصل میں کیا کرنا ہے کرنا چاہتے ہیں؟ اب میں تبدیل کال کرتے ہیں، تو کیا ہے اصل میں ہو رہا ہے؟ ٹھیک ہے، میں تبادلہ فون تو میں میں گزر رہا ہوں ایکس کا پتہ اور y کا ایڈریس. لہذا مثال کے طور پر، اگر ان دو ٹکڑے کاغذ کے اب دو کی نمائندگی کرتے ہیں دلائل a اور b کا تبادلہ کرنے کے لئے، میں کیا ہوں ، ان میں سے سب سے پہلے پر لکھنے کے لئے جا میں نے ایک کے طور پر حوالہ دیتے ہیں فون کرنے جا رہا ہوں جس؟ بالکل، 123. تو میں نے کا دعوی ہے کہ یہ ایک ہے. یہ ایک پیرامیٹر ہے. میں وہاں میں ایکس کا ایڈریس ڈال رہا ہوں. وہ کیا ہے؟ وہ کیا ہے؟ نہیں، نہیں، یہ ٹھیک ہے. اب بھی اچھا ہے، پھر بھی اچھا ہے. تو یہ ایک ہے. اور اب کاغذ کے دوسرے ٹکڑے پر، اس ب ہونے جا رہا ہے، اور میں کیا ہوں پر لکھنے جا رہا کاغذ کے اس ٹکڑے؟ 127. تو اس کے بعد سے تبدیل کر دیا گیا ہے کہ صرف ایک ہی چیز اس کہانی کا ہمارے گزشتہ کہہ، ہے بلکہ 1 لفظی سے زیادہ اور 2، میں ہوں 123 اور 127 میں منتقل کرنے کی جا رہی. اور میں اب ان کے اندر ڈال کرنے کے لئے جا رہا ہوں اس باکس میں سے، ٹھیک ہے؟ تاکہ بلیک باکس اب کی نمائندگی کرتا ہے سویپ تقریب. دریں اثنا، کی اب کوئی دو سویپ تقریب پر عملدرآمد. یہاں کسی کو کیا رضاکارانہ کام کرنا چاہتے ہیں؟ اپ چلو. آپ کا نام کیا ہے؟ چارلی. ٹھیک ہے، چارلی. اپ چلو. تو چارلی کھیلنے کے لئے جا رہی ہے ہمارے بلیک باکس کا کردار. میں تم سے کرنا چاہوں گا کیا اور چارلی، اب طرح سویپ کو لاگو کیا جاتا ہے کہ ان دونوں کے پتوں دیا، آپ اصل میں جا رہے تھے اقدار کو تبدیل کرنے کے لئے. اور میں آپ کے کان میں سرگوشی گے یہاں ٹی وی کو چلانے کے لئے کس طرح. لہذا آگے بڑھیں، اور آپ بلیک باکس ہیں. وہاں تک پہنچنے کے. تم نے کیا اقدار ایک کے لئے دیکھ کر، اور ہے آپ ب کے لیے کیا اقدار کو دیکھتے ہیں؟ چارلی: ایک 123 ہے اور ب 127 ہے. DAVID MALAN: ٹھیک ہے، بالکل. صرف ایک لمحے کے لئے وہاں اب روک دیتے ہیں. اب تم کیا کرنے جا رہے ہیں سب سے پہلی چیز کوڈ کے مطابق - جو اب میں سکرین پر ھیںچو گے - تھوڑا مختص ہونے جا رہا ہے میموری کا سا TEMP ملاقات کی. تو میں نے آگے جانے والے اور رہا ہوں آپ اس میموری دے. تو یہ ایک تہائی متغیر ہونے جا رہا ہے آپ کے لئے قابل رسائی ہے آپ TEMP ملاقات کی. اور کیا آپ کو لکھنے کے لئے جا رہے ہیں کاغذ کے ٹکڑے پر TEMP؟ چارلی: نوٹیفائر، ہے نا؟ DAVID MALAN: ٹھیک ہے، اچھی طرح سے نہیں اشارہ ضروری. تو میں نے اس کوڈ کی لائن دائیں ہاتھ کی طرف پر روشنی ڈالی، وہاں شروع کرتے ہیں. یہ ستارہ ایک کہتے ہیں. لہذا فی الحال محفوظ ہے نمبر 123. اور صرف intuitively، کیا ستارہ 123 کا مطلب کیا؟ لیکن خاص طور پر، ایک ہے تو 123، ایک ستارہ کا مطلب کیا ہے؟ ایک کی قیمت. یا اس سے زیادہ اتفاق سے، وہاں جاتے ہیں. تو میں ایک انعقاد، مجھے اس کی تجویز کرتے ہیں آپ کے ہاتھ، آگے بڑھو اور علاج ہے کہ اگرچہ کے طور پر ایک نقشہ ہے. اور کمپیوٹر کی اپنے آپ سے زیادہ چلنا میموری اور کیا ہے ہمیں تلاش محل وقوع کے 123 میں. بالکل ٹھیک. تو ہم محل 123 دیکھ کیا، ظاہر ہے؟ ٹھیک ہے، تو اب تم کیا قیمت ہیں TEMP میں ڈال کرنے کے لئے جا رہے ہیں؟ بالکل ٹھیک. لہذا آگے بڑھیں اور ایسا. اور ٹکڑے پر نمبر 1 لکھنا فی الحال TEMP عنوان ہے کہ کاغذ. اور اب اگلا قدم ہے کہ آپ کو لاگو کرنے کے لئے جا رہے ہیں کیا ہونے جا رہا ہے. ٹھیک ہے، کے دائیں ہاتھ کی طرف پر کوڈ کی اگلی لائن اسٹار ب ہے. ب، کے کورس کے، ایک ایڈریس تلاش. یہ 127 سے خطاب. سٹار ب اتفاق سے خطاب کرتے ہوئے کیا، اس کا مطلب؟ اس مقام کے پاس جاؤ. لہذا آگے بڑھیں اور کیا ہمیں تلاش محل وقوع کے 127 میں. ٹھیک ہے. کورس کے، محل وقوع کی 127 میں، اب بھی قیمت 2 ہے. تو تم کیا اب کی دکان جا رہے ہیں ایک میں مقام پر جو کچھ بھی ہے؟ تو ستارہ ایک ذریعہ کسی جگہ پر جانا. ایک جگہ کیا ہے؟ بالکل ٹھیک. تو اب، آپ کو تبدیل کرنا چاہتے ہیں تو اس مقام پر کیا ہے - میں آگے بڑھو اور چلانے گے صافی یہاں ہیں. اور اب برش پر اسے واپس ڈال دیا. کیا تعداد میں آپ کو لکھنے کے لئے جا رہے ہیں اب اس خالی خانے میں؟ بالکل ٹھیک. تو کوڈ کے اس لائن، صاف ہو جائے کرنے کے لئے - دو مجھے چارلی کی کیا کر رہا روک اور یہاں باہر کی طرف اشارہ کیا وہ صرف کیا ہے محل وقوع کے 123 میں ہے کہ باکس میں لکھنا ب سے پہلے تھا کہ قیمت. اور اس طرح اب ہم بے شک نافذ کر دیا ہے کوڈ کا یہ دوسری لائن. اب بدقسمتی سے، وہاں ہے باقی اب بھی ایک ہی لائن میں. لفظی، TEMP میں اب کیا ہے؟ یہ ظاہر ہے نمبر ایک ہے. یہ ایک ایڈریس نہیں ہے. یہ قسم کے، صرف ایک نمبر ہے ہفتے میں ایک سے ایک متغیر. اور اب تمہیں سٹار ب، کا مطلب ہے کہ کہنا ہے کہ جب ایڈریس ب جانا، جن میں سے ہے یہاں کورس. تو ایک بار تم وہاں پہنچ - میں آگے بڑھو اور اصل کیا ہے کو ختم کریں گے وہاں - آپ اور کیا کر رہے ہیں محل وقوع کے 127 سے کم اب تو لکھنے کے لئے جا رہے ہیں؟ چارلی: TEMP، ایک ہے. DAVID MALAN: TEMP، ایک ہے. اور آخر میں TEMP کیا ہوتا ہے؟ ٹھیک ہے، ہم واقعی نہیں جانتے. ہم واقعی پرواہ نہیں ہے. ہم ایک تقریب نافذ کر دیا ہے کسی بھی وقت اس طرح اب تک، کسی بھی مقامی متغیر ہے کہ آپ کو یقینا مقامی ہیں. اور وہ صرف غائب. وہ آپریٹنگ کی طرف سے دوبارہ حاصل کر رہے ہیں آخر میں نظام. تو TEMP اب بھی ہے حقیقت یہ ہے کہ قیمت 1 ترتیب دیں بنیادی ہے ہمیں uninteresting. ٹھیک ہے، تو تعریف کا ایک چکر ہم چارلی کے لئے ہو سکتے ہیں. بہت اچھا کیا. ٹھیک ہے، تو کیا ہوتا ہے یہ ہم کر سکتے ہیں مطلب؟ تو یہ ہے کہ ہم کیا گیا ہے کہ باہر کر دیتا ہے چند ایک سفید جھوٹ بول رہی کچھ وقت کے لئے. بے شک، یہ، کہ ایک تار باہر کر دیتا ہے اس وقت کے سب، ایک بہت نہیں ہے SE فی حروف کی ترتیب. اس قسم کی ہے کہ intuitively ہے. لیکن تکنیکی طور پر بولنے، سٹرنگ ہے ہم کے اندر کا اعلان کر دیا ہے کہ اعداد و شمار کی قسم دنیا آسان بنانے CS50 لائبریری کلاس کے پہلے چند ہفتوں کے لئے. کیا ایک تار واقعی ہے پتہ ہے کہیں RAM میں ایک کردار کی. ایک تار 123 کی طرح واقعی ایک نمبر ہے ہدبندی کرنا کیا ہوتا ہے کہ یا 127، ایک تار میں شروع ہوتی ہے جہاں آپ کے کمپیوٹر کی میموری. لیکن اس کی نمائندگی نہیں کرتا سٹرنگ، فی SE، خود. اور ہم اس کے طور پر مندرجہ ذیل ہے دیکھ سکتے ہیں. مجھ سے آگے بڑھو اور کھول دو کے درمیان ہے کہ کچھ کوڈ آج کی ماخذ کوڈ مثالیں. اور میں آگے بڑھو اور کھولنے کے لئے جا رہا ہوں اپ، کا آپس میں موازنہ-0.c، کی کہنے دو یہ جا رہا ہے کہ ایک چھوٹی گاڑی پروگرام ہے مندرجہ ذیل کے طور پر لاگو کیا جائے گا. سب سے پہلے. میں کچھ کہنے جا رہا ہوں. پھر میں آگے جانے والے اور رہا ہوں صارف کی طرف سے ایک سٹرنگ حاصل کہ اگلے لائن میں. پھر میں نے اسے دوبارہ کہنے جا رہا ہوں. پھر میں نے ایک اور حاصل کرنے کے لئے جا رہا ہوں صارف سے سٹرنگ. اور نوٹس، میں سے ایک دکھا رہا ہوں ے نامی ایک متغیر میں ڈور ہے، اور ان ڈور کی ایک اور T نامی ایک متغیر میں. اور اب میں بہت، کا دعوی کرنے جا رہا ہوں معقول حد تک، کے برابر ہے تو، T برابر ہے کہ ڈور ایک جیسے ہیں. تم سے یہی بات ٹائپ کریں. دوسری صورت میں، ڈور ہیں نہیں ایک ہی بات. سب کے بعد، ہم ان پٹ دو ints، دو تو حروف، دو floats، دو ڈبلز، میں سے کسی ہم کے بارے میں بات کی ہے کے اعداد و شمار اقسام ابھی تک ان کا آپس میں موازنہ - ہم تھوڑی دیر پہلے بہت واضح کر دیا یاد اگر آپ ایسا نہیں کرتے، کیونکہ واحد کے برابر سائن کورس کی ہے تفویض آپریٹر. تاکہ ایک مسئلے ہوگی. ہم برابر برابر علامت کا استعمال کرتے ہیں، بے شک جس کا موازنہ سچ مساوات کے لئے چیزیں. لیکن میں یہ چھوٹی گاڑی ہے دعوی. میں آگے بڑھو اور صفر کا آپس میں موازنہ کرتے ہیں تو، اور پھر ڈاٹ سلیش صفر کا آپس میں موازنہ کرتے ہیں. اور میں خوش آمدید، کی کا کہنا ہے کہ دو، میں ٹائپ کریں. اور اس کے بعد کی ایک بار پھر خوش آمدید کہتے ہیں. لفظی ایک ہی بات، کمپیوٹر مجھے مختلف چیزیں ٹائپ کا دعوی. اب شاید میں نے ابھی کچھ mistyped. میں نے اپنا نام اس وقت ٹائپ کریں گے. میرا مطلب ہے، ہیلو. خوش. یہ ہر وقت مختلف ہے. ٹھیک ہے، کیوں ہے؟ کیا سچ میں ہو رہا ہے ہڈ کے نیچے؟ ٹھیک ہے، کیا واقعی نیچے ہو رہا ہے ڈاکو تو سٹرنگ ہے میں نے مثال کے طور پر کہ پہلی بار میں ٹائپ لفظ کورس کے، خوش ہے. لیکن ہم نے نیچے اس کی نمائندگی کرتے ہیں تو ڈاکو، یاد ہے کہ ایک سٹرنگ ایک صف میں ہے. اور ہم نے ماضی میں جتنا کہا ہے. میں نے اس طرح کہ سرنی اپنی طرف متوجہ اگر ایسا ہے تو میں ہوں بہت کچھ کی نمائندگی کرنے والا ہم نے ایک لمحے کے پہلے نے کیا کیا کرنے کے لئے اسی طرح کی. اور کچھ اصل میں ہے بھی، یہاں خصوصی. ہم پر کیا گیا تھا اس بات کا تعین کیا ہر سٹرنگ کے آخر؟ جی ہاں، یہ الٹا سلیش صفر، جو ہے کی نمائندگی کرنے کا صرف راستہ، لفظی، 00000000. ایک قطار میں آٹھ 0 بٹس. میں نے واضح طور سے نہیں جانتا، اس کے بعد کیا ہے. یہ صرف ایک گروپ مزید رام کی میرے کمپیوٹر کے اندر. لیکن یہ ایک سرنی ہے. ہم سے پہلے arrays بارے میں بات کی. اور ہم عام طور پر arrays کے بارے میں بات محل وقوع صفر ہونے کے طور پر، تو ایک، دو. لیکن یہ صرف سہولت کے لئے ہے. اور یہ کہ مکمل طور پر رشتہ دار ہے. آپ اصل میں میموری سے ہو رہی ہے جب کمپیوٹر، اس کورس کی کسی بھی قسم کی ہے 2 ارب کچھ عجیب بائٹس، ممکنہ طور پر. تو واقعی ہڈ کے نیچے، یہ سب وقت، جی ہاں. یہ بہت اچھی طرح بریکٹ صفر ہو سکتا ہے. لیکن آپ نیچے بھی گہرے کھودنے تو ڈاکو، یہ واقعی ہے تعداد 123 سے خطاب. اس پتے 124 ہے. اس پتے 125 ہے. اور میں اس وقت بگاڑ نہیں کیا. یہ اب ایک رائج ہیں علاوہ کس وجہ سے؟ ایک چار کتنا بڑا ہے؟ ایک چار صرف ایک بائٹ ہے. ایک INT عام طور پر چار بائٹس ہے. میں نے اسے 123 کر دیا لہذا، ہے 127، 131 اور تو آگے. اب میں ریاضی آسان رکھ سکتے ہیں اور صرف پلس 1 کرتے ہیں. اور یہ واقعی میں اب کیا ہو رہا ہے ہے ہڈ کے نیچے پر. آپ کو کچھ اس طرح کا اعلان تو جب سٹرنگ S، یہ اصل میں ہے - یہ باہر کر دیتا ہے - چار ستارہ. سٹار، کورس کی، کا مطلب پتہ، ارف پوائنٹر. تو یہ کچھ پتہ ہے. یہ کس کا ایڈریس ہے؟ ٹھیک ہے - میں بہت دیکھ سکتے ہیں، جو صرف ایک ہی ہوں اہم بات میں بنانے، یا لگتا ہے کہ رہا ہوں میں بنا رہا ہوں. تو سٹرنگ - دکھ کی بات یہ ہے کہ میں نے ایک مانیٹر کر رہا ہے وہیں جہاں میں کہ دیکھا ہے ہو سکتا ہے. ٹھیک ہے، تو سٹرنگ ایس کیا ہے میں نے اس سے پہلے اعلان کر دیا. لیکن یہ ایک چھوٹی سی کا شکریہ، باہر کر دیتا ہے CS50 لائبریری میں جادو، یہ سب وقت سٹرنگ لفظی ہے چار ستارہ رہا. ستارہ ایک بار پھر کا مطلب ہے پوائنٹر یا ایڈریس. یہ flanking ہے حقیقت یہ ہے کہ چار لفظ ہے اس کا مطلب ایک کردار کا پتہ. سٹرنگ کہا جاتا ہے، حاصل کرنے، اور میں ٹائپ کریں تو ایچ ای ایل ایل اے میں حاصل کیا ہے اب تجویز سٹرنگ لفظی کے سب واپس آ گیا اس وقت، ہم ہے بلکہ اگرچہ دنیا oversimplified؟ سٹرنگ دراصل حاصل کرتا ہے اس کی واپسی کی قیمت کے طور پر واپس آ جائیں؟ اس کیس میں 123، مثال کے طور پر. ہم پہلے سٹرنگ حاصل نے کہا کہ ہے صرف ایک تار کے ایک ہی تسلسل واپس حروف. لیکن یہ ایک سفید جھوٹ کا تھوڑا سا ہے. جس طرح سٹرنگ واقعی کام کرتا حاصل ہڈ کے نیچے یہ ہو جاتا ہے صارف سے سٹرنگ. یہ کہ حروف plops یاد میں وہ یا وہ اقسام. یہ آخر میں ایک الٹا سلیش صفر رکھتا ہے حروف کی ترتیب ان کے. لیکن اس وقت سٹرنگ کیا ہوتی ہے لفظی واپس؟ یہ لفظی کا پتہ واپس RAM میں بہت پہلے رائج ہے کہ اس کی طاقت کے لئے استعمال کیا. اور یہ واپس لوٹنے کی طرف سے صرف باہر کر دیتا ہے کا ایک ایڈریس سٹرنگ میں پہلا کردار یہ ہے کہ کے مکمل طور پر تلاش کرنے کے لئے کافی سٹرنگ. دوسرے الفاظ میں، سٹرنگ نہیں ہے حاصل 123 اور 124 اور 125 واپس لوٹنے کے لئے. یہ میرے ایک طویل دینے کے لئے نہیں ہے کہ بائٹس کے تمام کی فہرست میری سٹرنگ کا استعمال کرتے ہوئے کیا جاتا ہے. ایک وجہ سے، وہ واپس کرنے کے لئے تمام واپس آ گئے ہیں. اور میں، سب سے پہلے ایڈریس پر دو، کی بنیاد پر سٹرنگ کہاں ختم ہوتی پتہ کر سکتے ہیں. کس طرح؟ خصوصی اتارنا null کردار آخر میں صفر الٹا سلیش. تو دوسرے الفاظ میں، اگر آپ کے ارد گرد منتقل - متغیرات میں سے اندر - ایک چار کا پتہ، اور آپ فرض کسی بھی سٹرنگ کے آخر میں، کسی بھی ہے کہ ہم انسانوں کے طور پر حروف کی ترتیب اگر آپ فرض کریں، اگر ڈور کے بارے میں سوچنا ہے کہ وہاں ایسے کسی بھی سٹرنگ کے آخر میں ایک الٹا سلیش صفر، آپ سنہری ہیں. آپ کو ہمیشہ حاصل کر سکتے ہیں کیونکہ ایک تار کے آخر میں. اب کیا واقعی میں اس وقت جا رہا ہے اس پروگرام میں پر نہیں ہیں؟ کیوں اس پروگرام ہے، موازنہ-0.c، چھوٹی گاڑی؟ اصل کے مقابلے میں کیا کیا جا رہا ہے؟ جی ہاں؟ طالب: [اشراوی]. DAVID MALAN: بالکل درست. یہ مقامات کا موازنہ ہے تار کی. صارف خوش ایک بار میں ٹائپ ہے اگر ایسا ہے تو میں نے کے طور پر، میموری ختم ہو سکتا ہے اس طرح تلاش کر. ایک بار پھر خوش میں صارف پھر اقسام ہیں تو، لیکن پھر سٹرنگ حاصل فون کر کے، سی ہے آپ کو خاص طور پر ہوشیار نہیں سکھاتے جب تک یہ کوڈ لکھ کر ہوشیار ہو. C - زیادہ عام طور پر اور کمپیوٹر - آپ خوش ایک بار پھر لفظ میں ٹائپ کرتے ہیں تو، اگر آپ کو حاصل کرنے کے لئے جا رہے ہیں کیا پتہ. تم صرف ایک دوسرے سرنی حاصل کرنے کے لئے جا رہے ہیں میموری کی کہ، جی ہاں، ہو کیا ہوتا ہے ایچ ای ایل ایل اے محفوظ اور تو آگے. یہ وہی نظر آتے جا رہا ہے ہمیں انسانوں، لیکن اس پتے 123 نہیں ہو سکتا ہے. یہ صرف اتنا ہو سکتا ہے کہ آپریٹنگ سسٹم کے کچھ دستیاب ہے مقام پر مثال کے طور پر کی جگہ - صوابدیدی کچھ کہنے دو کی، اس طرح مقام 200 ہے. اور یہ مقام 201 ہے. اور یہ مقام 202 ہے. ہم وہ ہے جہاں کوئی اندازہ نہیں ہے یاد میں ہونے جا رہا. لیکن اس کا مطلب کیا ہے ے میں بالآخر ذخیرہ کیا جا رہا؟ نمبر 123. ، T میں محفوظ کیا جائے گا کیا ہو رہا ہے اس صوابدیدی مثال میں؟ نمبر 200. اور اس کا مطلب ہے کہ اس وقت سب، ظاہر ہے 123 200 کے برابر نہیں ہے. اور اس طرح اس کی حالت تو کبھی نہیں سچ پر کی تشخیص کرتا ہے. حاصل سٹرنگ مختلف استعمال کر رہا ہے کیونکہ میموری کی مقدار ہر وقت. اب ہم اس کو پھر سے دیکھ سکتے ہیں ایک اور مثال میں. مجھ سے آگے بڑھو اور کاپی 0.c کھول دیں. میں نے اس مثال کے طور پر کی جا رہی ہے کا دعوی ہے کہ کرنے کی کوشش کریں - لیکن ناکام - دو ڈور کاپی کرنے کے لئے کے طور پر مندرجہ ذیل ہے. میں کچھ کہنے جا رہا ہوں صارف کو. میں پھر ایک حاصل کرنے کے لئے جا رہا ہوں سٹرنگ اور اس کا کہتے ہیں. اور اب، میں یہاں یہ چیک کر رہا ہوں. ہم نے اس تھوڑی دیر کے پیچھے کا ذکر کیا. لیکن جب سٹرنگ واپسی اتارنا null مل سکتا ہے ایک اور خصوصی حروف، یا خصوصی علامت چلو کا کہنا ہے کہ. یہ میموری سے باہر ہے تو. مثال کے طور پر، صارف کو واقعی ہے تو ایک atrocious مشکل اور اقسام کیا جا رہا ہے میں حروف کی تعداد کی بورڈ اور مشاہدات درج کریں. حروف کی یہ تعداد صرف نہیں کر سکتے ہیں پاگل جو RAM میں فٹ وجہ سے، اچھی طرح سٹرنگ طاقت حاصل بہت اچھی طرح سے واپس شہوت انگیز null. یا اپنے پروگرام بذات خود ایک بہت کر رہی ہے تو دوسری چیزوں کے اور صرف ہے حاصل سٹرنگ کے لئے کافی میموری نہیں کامیاب ہونے کے لئے، یہ ختم ہو سکتا ہے شہوت انگیز null واپس لوٹنے تک. لیکن زیادہ درست ہو جانے دو یہ کیا ہے کے طور پر. کے اعداد و شمار کی قسم کی واقعی کیا ہے؟ چار ستارہ. تو یہ اب ہم چھیل کر سکتے ہیں باہر کر دیتا ہے شہوت انگیز null کی پرت کی حمایت. باہر کر دیتا، شہوت انگیز null ہے - جی ہاں، ظاہر ہے ایک خاص علامت. لیکن یہ واقعی میں کیا ہے؟ سچ میں، شہوت انگیز null صرف ایک نشانی ہے کہ ہم انسانوں کے ساتھ ساتھ صفر کی نمائندگی کے لئے استعمال کرتے ہیں. سی کے مصنفین، اور کمپیوٹر تو مزید عام طور پر، سال پہلے کا فیصلہ کہ، تمہیں معلوم ہے. ہم کیوں یقینی نہیں ہے کہ صارف کا کوئی اعداد و شمار کبھی، کبھی، کبھی بھی ہے بای صفر پر محفوظ کیا جاتا؟ اصل میں، یہاں تک کہ میری صوابدیدی مثال میں اس سے پہلے، میں نمبر شروع نہیں کیا صفر پر بائٹس. میں ایک میں شروع کر دیا. میں دنیا میں کہ لوگ جانتے تھے کیونکہ صفر محفوظ رکھتے ہیں کا فیصلہ کیا ہے کسی کی ریم کے طور پر میں بائٹ کچھ خاص. وجہ کیا جا رہا ہے، کسی بھی وقت آپ چاہتے ہیں کچھ غلط ہو گیا ہے کہ اشارہ پتوں کے حوالے سے، آپ واپس آئے شہوت انگیز null - دوسری صورت میں صفر کے طور پر جانا جاتا - اور آپ کو نہیں ہے جانتے ہیں کہ اس کی وجہ واضح طور پر، پتہ صفر پر اعداد و شمار legit کہ ایک غلطی کا مطلب ہے. اور یہ کہ ہم نے کنونشن کی طرف سے جانچ پڑتال کیوں ہے شہوت انگیز null اور بدلے کچھ ان صورتوں میں ایک جیسے. اب ہم ذیل میں سکرال اگر ایسا ہے تو یہ صرف ہے پھر کچھ غلطی چیکنگ، صرف میں کیس کچھ [کے ساتھ غلط ہو گیا؟ ضمانت؟] مکمل طور پر اور پروگرام چھوڑ دیا جلد واپس لوٹنے کی طرف سے. یہ لائن اب دوبارہ جا سکتا ہے اس کے طور پر، جس کا مطلب کیا ہے؟ بائیں ہاتھ کی طرف، مجھے ایک اور دے ایک کردار ہے، اور یہ ٹی فون کرنے پوائنٹر. میں کی بنیاد پر، ٹی کے اندر کیا محفوظ کر رہا ہوں کوڈ کے اس ایک ہی لائن میں؟ میں نے ایک جگہ محفوظ کر رہا ہوں. خاص طور پر محل وقوع کہ ے میں تھا. صارف خوش میں ٹائپ ہے، اور اگر ایسا ہے تو کہ سب سے پہلے خوش ختم کرنے کے لئے ہوتا ہے یہاں، پھر تعداد 123 ہے ملے سے واپس آنے والے STRING اور ذخیرہ کیا جائے - ہم نے پہلے کہا کے طور پر - ے میں. اب میں ایک اور پوائنٹر اعلان جب ایک چار ہے اور یہ فون T، نمبر کیا ہے لفظی میں ختم کرنے کے لئے جا کہانی کے مطابق T؟ 123 تو. لہذا تکنیکی طور پر اب ے اور دونوں T عین مطابق کی طرف اشارہ کر رہے ہیں میموری کی اسی مقدار. تو میں اب کیا کرنے جا رہا ہوں کیا محسوس اس پروگرام چھوٹی گاڑی ہے، یہ ثابت. کے ساتھ سب سے پہلے میں، کا دعوی کرنے جا رہا ہوں ایک پرنٹ F، فائدہ سٹرنگ کی کاپی. پھر میں نے ایک چھوٹی سی کرنے والا ہوں چیکنگ میں خرابی. مجھے یقین بنانے کے لئے جا رہا ہوں. چلو سٹرنگ ٹی پر ہے کہ اس بات کو یقینی بنائیں کم از کم لمبائی میں صفر سے زیادہ، تو کچھ کردار وہاں ہے اصل فائدہ اٹھانے. اور پھر آپ اس کو یاد کر سکتے ہیں گزشتہ مثالوں سے. اوپری 2 - میں ہے جو ctype.h فائل. ٹی بریکٹ صفر مجھے صفر دیتا ہے سٹرنگ ٹی کے کردار. کہ ایک ہی قیمت کے اوپری اور 2، کورس کی، اس کے بڑے کے لئے بدل دیتا ہے. تو intuitively، اس لائن پر روشنی ڈالی کوڈ کا پہلا فائدہ ہے T میں خط. لیکن یہ intuitively، فائدہ نہیں ہے پاکستان میں سب سے پہلے خط. تم آگے سوچ رہے ہیں لیکن اگر میں کیا ہوں میں نے اس پروگرام چلائیں جب کے بارے میں دیکھنے کے لئے اور، اصل دونوں باہر پرنٹ S، اور نام نہاد کاپی، T؟ وہ اصل میں ایک ہی بننے جا رہے ہو. اور کیوں وہ ایک ہی ہونے جا رہے ہیں؟ وہ کی طرف اشارہ کر رہے ہیں دونوں بالکل ایک ہی بات. تو یہ کرتے ہیں. کاپی صفر بنائیں. یہ ٹھیک ہے compiles. مجھے کاپی صفر چلانے ہیں. مجھ میں خوش طرح کچھ ٹائپ کرتے ہیں تمام چھوٹے پھر درج کریں مارا. اور یہ دعوی کیا ہے کہ حقیقی کے دونوں اور کاپی واقعی ایک جیسی ہیں. تو کیا سچ میں یہاں کیا ہوا ہے؟ مجھے اس تصویر کو صرف redraw کرنے دو ایک میں کہانی بتانے کے لئے تھوڑا سا مختلف طریقے سے. کیا واقعی نیچے ہو رہا ہے میں نے کچھ اس طرح کا اعلان جب ڈاکو چار آغاز S، یا سٹرنگ S، میں ایک پوائنٹر ہو رہی ہے - جس میں چار بائٹس ہو CS50 آلات میں اور کمپیوٹر کے ایک بہت میں. اور میں نے اس کے فون کرنے کے لئے جا رہا ہوں. اور یہ اس وقت ہے کسی نامعلوم قدر. آپ کو ایک متغیر کا اعلان کرتے ہیں، تو جب تک آپ اپنے آپ کو، وہاں جو ایک قدر رکھ وہاں کیا ہے جانتا ہے. یہ کچھ بے ترتیب ترتیب میں ہو سکتا ہے گزشتہ عملدرآمد سے بٹس. لہذا میں کوڈ کی میری قطار میں حاصل کرتے ہیں جب سٹرنگ، اور پھر واپسی ذخیرہ کی میں قدر کسی نہ کسی طرح حاصل سٹرنگ - اور ہم بالآخر حاصل کس طرح واپس چھیل دیں گے سٹرنگ کام، کسی نہ کسی طرح ایک مختص شاید لگتا ہے کہ سرنی اس طرح تھوڑا سا. ایچ ای ایل ایل اے، الٹا سلیش صفر. یہ پتہ ہے کہ اس کی فرض کرتے ہیں 123 صرف پہلے مستقل مزاجی. تو میں، سٹرنگ ریٹرن حاصل وہاں لائن پر روشنی ڈالی، اس کے واپس تعداد 123 ہم نے کہا. تو کیا واقعی یہاں ے کے اندر جاتا ہے؟ ویسے، واقعی کیا جاتا ہے اندر کے 123 ہے. لیکن واضح طور سے، میں نے ایک چھوٹی سی ہو رہی ہے ان پتوں میں سے سب کی طرف سے الجھن میں، ان صوابدیدی تعداد کے تمام. 123، 124، 127. تو اصل میں آسان بنانے دو دنیا تھوڑا سا. ہم واضح طور سے، اشارہ کے بارے میں بات کرتے ہیں، پر ہم سے انسانوں کو، جو heck جہاں پرواہ کرتا ہے چیزوں کی یاد میں ہیں؟ یہ مکمل طور پر صوابدیدی ہے. یہ کس طرح پر منحصر ہے جا رہا ہے بہت صارف ہے رام. اس دن جب میں اس پر منحصر ہے جا رہا ہے آپ شاید، پروگرام چلائیں، اور کیا ان پٹ صارف آپ کو فراہم کرتا ہے. ہم نے غیر اہم تفصیلات پر مکان ہیں. تو چلو دور خلاصہ اور اس کا کہنا ہے کہ، اگر آپ اس طرح کے کوڈ کا ایک لائن چلاتے ہیں تو، چار ستارہ کی واپسی ہو جاتا ہے حاصل سٹرنگ کی قدر. ہم کیوں اس کی بجائے صرف ہم کیا اپنی طرف متوجہ نہیں کرتے ہے اگرچہ اس کے طور پر ایک پوائنٹر فون کرتے رہتے کچھ کی طرف اشارہ؟ تو میں نے اس کے اب تک کا دعوی ایک پوائنٹر ہے - ہڈ کے نیچے یہ ایک پتہ ہے. لیکن یہ صرف کی طرف اشارہ ہے میں سب سے پہلے بائٹ سٹرنگ کہ واپس آ گیا ہے. اب میں یہاں کوڈ کی طرف لوٹ آئے ہیں تو، اس لائن پر چل رہا ہے؟ ٹھیک ہے، اب اس پر روشنی ڈالی لائن میں، میں بظاہر ایک اور اعلان کر رہا ہوں T نامی متغیر. لیکن یہ بھی ایک پوائنٹر ہے، تو میں جا رہا ہوں عین مطابق، اصول میں، کے طور پر اپنی طرف متوجہ کرنے ایک ہی سائز کے خانے. اور میں نے اسے ٹی فون کرنے جا رہا ہوں. اور اب ہم پھر کوڈ کو واپس جانا ہو، میں نے ٹی کے کے اندر سٹور، جب میں تکنیکی طور پر کیا ہوں T کے اندر ڈال؟ ویسے تکنیکی طور پر، اس تعداد 123 تھی. تو واقعی میں تحریری طور پر ہونا چاہئے وہاں نمبر 123. لیکن اس کی اعلی سطح لینے دو T، یہ صرف ایک پوائنٹر ہے، intuitively، صرف یہ ہے کہ. کہ کیا جا رہا ہے کی تمام ہے کہ وہاں میں ذخیرہ. تو اب آخری دلچسپ لائنوں میں کوڈ کی، میں واقعی کے بارے میں جب صفر کردار فائدہ T میں، کیا ہو رہا ہے؟ ویسے، T بریکٹ صفر اب طرف اشارہ کیا جاتا ہے کیا کردار، شاید؟ یہ H کی طرف اشارہ ہے. کیونکہ ٹی بریکٹ صفر - یاد ہے، اس کی عمر نحو ہے. T بریکٹ T، T ایک تار ہے تو صفر صرف کا مطلب ہے بریکٹ صفر صفر حاصل کرنے کا مطلب ہے کہ کہ طاقت میں کردار. واقعی مطلب یہ ہے کہ تو کیا اس سرنی کے لئے جانا جاتا ہے - اور ہاں، یہ، 123 ہو سکتا ہے یہ 124 ہو سکتا ہے. لیکن یہ تمام رشتہ دار ہے، یاد ہے. ایک سرنی کے بارے میں بات جب ہم نے کے بارے میں بات کا فائدہ رشتہ دار سوچکانکوں. اور اس طرح اب ہم صرف فرض کر سکتے ہیں کہ T بریکٹ صفر ح ہے. میں نے اس پر 2 اوپری فون اگر ایسا ہے تو وہ کیا ہے واقعی فائدہ ہے کر بڑے ایچ کرنے کے لئے چھوٹے ح لیکن کورس کے، S کیا ہے؟ یہ وہی خوفناک سٹرنگ کی طرف اشارہ ہے. لہذا یہ ہو رہا ہے کہ تمام اس کوڈ میں اب تک. تو پھر کیا مطلب ہے؟ ہم ان دو مسائل کو کیسے ٹھیک کروں؟ ہم کس طرح اصل ڈور کا موازنہ کرتے ہیں؟ ویسے intuitively، کس طرح کرے گا تم دونوں کا موازنہ کے بارے میں سچ مساوات کے لئے ڈور؟ اسکا کیا مطلب ہے اگر دو ڈور برابر ہیں؟ واضح طور پر نہیں ان کے پتے ہیں کہ ایک کم ہے کیونکہ، میموری میں برابر سطح پر عمل درآمد کی تفصیلات. تمام حروف ایک ہی ہیں. تو مجھے تجویز کرتے ہیں، اور میرا تعارف دو compare.c کے ورژن میں سے ایک میں یہاں، تو موازنہ-1.c. ہم اب بھی ایک ملے کہ مجھے تجویز کرتے ہیں ے کہا جاتا پوئینٹر، اور اس میں اسٹور حاصل سٹرنگ کی قدر واپس. T کے ساتھ ایک ہی کام کرتے ہیں کی. تو کوڈ میں سے کوئی بھی مختلف ہے. میں تھوڑا شامل کرنے کے لئے جا رہا ہوں اب کی جانچ پڑتال مزید خرابی. تو اب ہم واپس چھیلنے کی طرح ہو کیا ایک تار کے CS50 میں اس تہوں اصل میں ہے، ہم زیادہ مقعد ہونے کی ضرورت اس بات کا یقین کرنے کے بارے میں ہم غلط استعمال نہیں کرتے شہوت انگیز null طرح باطل اقدار. تو میں صرف چیک کرنے کے لئے جا رہا ہوں. کے برابر شہوت انگیز null نہیں کرتا اور ٹی نہیں کرتا تو برابر شہوت انگیز null، کہ ہم ٹھیک ہو کا مطلب ہے. سٹرنگ ہو رہی بگاڑ نہیں کیا ہو یا تو ان ڈور کی. اور تم شاید اب اندازہ لگا سکتا ہوں کیا STR CMP شاید کرتا ہے؟ سلک کا آپس میں موازنہ. تم سے پہلے جاوا میں پروگرام ہے اگر ایسا ہے تو اس میں برابر کے طریقہ کار کی طرح ہے سٹرنگ کلاس. لیکن نہیں ہے جو تم میں سے ان لوگوں کے لئے اس سے پہلے کہ پروگرام، یہ صرف ایک سی تقریب ہے. یہ ایک میں آنے کے لئے ہوتا ہے فائل string.h ملاقات کی. اس کا اعلان کر دیا ہے جہاں ہے. اور سٹرنگ کا آپس میں موازنہ - میں واقعی میں اس کے استعمال کو بھول جاؤ، لیکن اس سے کوئی بات نہیں. ہم کر سکتے ہیں کہ یاد آدمی، کا آپس میں موازنہ ہلچل. اور یہ پرورش کی جا رہی ہے لینکس پروگرامرز دستی. اور یہ واضح طور سے، ایک چھوٹا سا خفیہ ہے. لیکن میں نے جی ہاں، کہ یہاں دیکھ سکتے ہیں. میں string.h شامل کرنے کے لئے ہے. اور یہ "، وضاحت کے تحت یہاں لکھا ہے سٹرنگ کا آپس میں موازنہ تقریب کا موازنہ دو ڈور S1 اور S2. "اور S1 اور S2 بظاہر دو ہیں دلائل رکنیت منظور مجھے سچ میں یاد نہیں ہے کیا CONST ہے، لیکن اب کا نوٹس - کب اور آپ پہلے سے ہی یہ دیکھا ہے ہو سکتا ہے تم انسان کے صفحات کا استعمال کرتے ہے اگر آپ یہ سب ہے - کہ چار ستارہ صرف مترادف ہے تار کے ساتھ. تو یہ دو ڈور، S1 کا موازنہ اور S2، اور یہ کم ایک عدد صحیح واپس سے زیادہ یا برابر یا صفر سے زیادہ S1 پایا جاتا ہے، اگر بالترتیب ہونا سے بھی کم، یا مطابقت، یا S2 سے زیادہ ہونا. یہ صرف کہنے کا ایک بہت پیچیدہ طریقہ ہے کہ سٹرنگ کی واپسی کا موازنہ صفر دو ڈور intuitively ہیں تو کے لئے ایک جیسی، کردار کردار کے لئے کردار. یہ ایک منفی نمبر اگر واپس S، حروف تہجی، سمجھا جاتا ہے T سے پہلے آنے کے لئے. یا ایک مثبت تعداد اگر واپس ایس ٹی کے بعد آنے والی ہے حروف تہجی کے. تو اس سادہ تقریب کے ساتھ، سکتا اگر آپ مثال کے طور پر، ایک طرح الفاظ کے پورے گچرچھی؟ تو اس نئے ورژن میں، میں جا رہا ہوں آگے بڑھو اور compare1 بنانے کے لئے. ڈاٹ سلیش ایک کا آپس میں موازنہ. میں نے تمام کم کیس میں خوش میں ٹائپ کریں گے. میں نے ہیلو میں ٹائپ کرنے کے لئے جا رہا ہوں پھر تمام خفی میں. اور شکر ہے اب یہ احساس میں بھی وہی ٹائپ. دریں اثنا، تو میں زیریں میں خوش میں ٹائپ کریں کیس اور اوپری کیس میں ہیلو اور ان کا آپس میں موازنہ، میں ٹائپ دونوں مختلف چیزیں ہیں. نہ صرف کیونکہ پتے ہیں مختلف، لیکن ہم آپس میں موازنہ کر رہے ہیں بار بار مختلف حروف. ٹھیک ہے کی ایک جاؤ اور ٹھیک کرنے دو اب دوسری مسئلہ. میرے ورژن ایک کھول دو اب سے خطاب، جس کی کاپی، اس مسئلے کے طور پر مندرجہ ذیل ہے. اور یہ ایک نظر جا رہا ہے تھوڑا سا زیادہ پیچیدہ. لیکن تم کیا مسئلہ کے بارے میں سوچنا تو ہم کو حل کرنے کی ضرورت ہے، امید ہے کہ یہ ہو جائے گا اب صرف ایک لمحے میں صاف کریں. تو یہ پہلی سطر، چار آغاز T، میں عام آدمی کی شرائط کسی تجویز کر سکتے ہیں یہ لکیر یہاں کیا مطلب ہے؟ چار اسٹار ٹی، کر رہے ہیں وہ کیا ہے؟ اچھا ہے. کچھ کرنے کے لئے ایک پوائنٹر بنائیں یاد میں جگہ. اور مجھے یہ تھوڑا سا بہتر ہیں. ذخیرہ گے کہ ایک متغیر کا اعلان میموری میں کچھ چار کا پتہ، صرف تھوڑا زیادہ مناسب ہو. ٹھیک ہے، تو اب دائیں ہاتھ کی طرف پر، میں نے ان افعال میں سے ایک کبھی نہیں دیکھا اس سے پہلے، malloc. لیکن اس کا کیا مطلب ہو سکتا ہے؟ میموری کی ایلوکیشن. میموری تین ہلاک. تو یہ ہم اب تک اپ، باہر کر دیتا ہے واقعی کا ایک طاقتور طریقہ نہیں کھایا ہے آپریٹنگ سسٹم پوچھ، مجھے کچھ یاد دے. بلکہ، اب ہم سے ملاقات کی ایک تقریب ہے بالکل ویسا کرتا ہے malloc. یہ تھوڑا سا ہے اگرچہ تباہی ابھی، نوٹس میں ہے کہ دو قوسین کے درمیان ہے صرف ایک بڑی تعداد ہونے جا رہا. میں نے سوال میں ٹائپ ہے کہاں نمبروں کی ایک بڑی تعداد ہو سکتی ہے. اور اس تعداد کا مطلب ہے کہ مجھے 10 بائٹس دے. مجھے 20 بائٹس دیں. مجھے 100 بائٹس دیں. اور malloc کے لئے اپنی پوری کوشش کروں گا آپریٹنگ سسٹم سے دعا گو ہیں - اس کیس میں لینکس، - ارے، ان کے 100 بائٹس ہیں دستیاب RAM کے؟ اگر ایسا ہے تو نے مجھے ان بائٹس واپس جن میں سے کا پتہ آرہے ہیں شاید ان بائٹس،؟ ایک بہت پہلے. تو یہاں بھی - اور یہ اہم ہے سی، تم کسی بھی وقت میں پتوں کے ساتھ نمٹنے؟ آپ نے تقریبا ہمیشہ سے نمٹنے کر رہے ہیں سب سے پہلے اس طرح پتہ، کوئی بات نہیں کتنا بڑا آپ کو کیا جا رہا ہے میموری کا ایک حصہ ، تو بات کرنے کو واپس حوالے کر دیا. تو چلو یہاں میں گوتا لگا. میں کس طرح مختص کرنے کی کوشش کر رہا ہوں کئی بائٹس، بالکل؟ ٹھیک ہے. ے کی سلک کی لمبائی - چلو ایک ٹھوس مثال کے طور پر کرتے ہیں. ے خوش ہے تو ایچ ای ایل ایل اے، کیا ہے ے کی سٹرنگ کی لمبائی، ظاہر ہے؟ تو یہ پانچ ہے. لیکن میں، کیوں کہ اس پر ایک پلس 1 کر رہا ہوں؟ کیوں میں نے چھ رائج کرنا چاہتے ہیں بجائے پانچ؟ شہوت انگیز null کردار. میں اس سے دور چھوڑ نہیں کرنا چاہتا خصوصی کردار شہوت انگیز null. کیونکہ میں خوش کی نقل بنانے اور اگر صرف ایچ ای ایل ایل اے کروں، لیکن میں نہ ڈالو کہ خصوصی حروف، کمپیوٹر موقع، ایک الٹا سلیش کی طرف سے، نہیں کر سکتے ہیں میرے لئے وہاں صفر. اور اس طرح میں نے پتہ لگانے کی کوشش کر رہی ہوں تو کاپی کی لمبائی، مجھے لگتا ہے کہ ہو سکتا ہے یہ 20 حروف طویل ہے، یا ایک لاکھ میں صرف ایسا کبھی نہیں اگر طویل حروف ایک الٹا سلیش صفر مارا. تو ہم چھ بائٹس ذخیرہ کرنے کے لئے کی ضرورت ہے ایچ ای ایل ایل اے، الٹا سلیش صفر. اور پھر یہ صرف ہے سپر مقعد ہو. میں بھول گیا کہ فرض کیا ایک چار کے برابر ہے. ہم اس کی ایک بائٹ کہہ رکھنا. اور یہ عام طور پر ہے. اصول میں، یہ کچھ ہو سکتا ہے ایک مختلف میک یا ایک پر، مختلف مختلف پی سی کے. اس آپریٹر کی ہے تو یہ باہر کر دیتا ہے sizeof کہا جاتا ہے کہ تم اس کے پاس تو ایک ڈیٹا کی قسم کا نام - کی طرح چار، یا INT، یا فلوٹ - یہ کتنے، کو متحرک طور پر، آپ کو بتائے گا رائج ایک چار اس پر لیتا خاص طور پر کمپیوٹر. تو یہ مؤثر طریقے سے صرف یہ ہے اوقات 1 یا کہہ طرح بالکل اوقات کچھ بھی نہیں. لیکن میں، صرف سپر مقعد ہونا یہ کر رہا ہوں صرف میں کیس ایک چار مختلف ہے کہ آپ کے کمپیوٹر کے مقابلے میں میری، اس طرح پر ریاضی ہمیشہ چیک کرنے کے لیے جا رہی ہے. آخر میں، یہاں ذیل میں، شہوت انگیز null کے لئے چیک جو ہمیشہ اچھی پریکٹس ہے - ایک بار پھر، ہم اشارہ کے ساتھ نمٹنے کر رہے ہیں کسی بھی وقت. malloc دینے کے قابل نہیں تھی تو مجھے چھ byes - ہے جو امکان نہیں، لیکن صرف میں کیس - فوری طور پر ایک واپس. اور اب، آگے بڑھو اور کاپی سٹرنگ کے طور پر مندرجہ ذیل ہے. اور یہ، واقف نحو ہے ایک مختلف کردار میں اگرچہ. میں آگے بڑھو اور سٹرنگ حاصل کرنے کے لئے جا رہا ہوں ے کی لمبائی اور (ن) میں سٹور. میں تو مجھے برابر سے iterate کرنے جا رہا ہوں ، اور (ن) سمیت اپ صفر سے بڑا یا برابر. ہر iteration پر، میں ڈال دیا تاکہ ith میں ے کی ith کردار T کے کردار. تو کیا واقعی نیچے ہو رہا ہے یہاں ہڈ؟ اچھی بات یہ ہے کہ اگر مثال کے طور پر کی ہے - اور میں نے لفظ ایچ ای ایل ایل اے میں ٹائپ ہے اور ایک الٹا سلیش صفر ہے. اور پھر، اس کے یہاں کی طرف اشارہ ہے. اور یہاں اب T ہے. اور یہ اب کی طرف اشارہ کیا جاتا ہے میموری کی ایک کاپی، ہے نا؟ Malloc مجھے ایک پوری دیا ہے میموری کا حصہ. میں ہے کہ ابتدائی طور پر پتہ نہیں کیا ان مقامات میں سے کسی میں. تو میں نے ان کے طور پر کے بارے میں سوچنا کرنے جا رہا ہوں سوال نمبروں کے پورے گچرچھی. لیکن جیسے ہی میں شروع کے طور پر صفر سے looping S، T کی لمبائی کے ذریعے اپ پر بریکٹ صفر اور ٹی بریکٹ 1 - اور اب میں یہ ڈال دیتا ہوں اور ہیڈ پر - T بریکٹ صفر اور S بریکٹ صفر کا مطلب میں کاپی کیا جا جا رہا ہوں کہ یہاں iteratively H، ای ایل ایل اے. پلس پلس میں، کیا وجہ 1، الٹا سلیش صفر. تو اب موازنہ-1.c کی صورت میں، آخر میں، میں باہر پرنٹ اگر T کے بڑے حروف تہجی، ہمیں چاہئے ے کوئی تبدیلی نہیں کی ہے کہ دیکھتے ہیں. مجھے اب آگے بڑھو اور اس کے کرتے ہیں. تو copy1 بناتے ہیں. ڈاٹ سلیش copy1. میں نے ہیلو، درج کریں میں ٹائپ کرنے کے لئے جا رہا ہوں. اور اب، صرف نقل نوٹس بڑا کر دیا گیا ہے. میں واقعی ہے کیونکہ دو میموری کی مقدار. بدقسمتی سے، آپ کو کچھ خوبصورت کر سکتے ہیں یہاں برا اور خوبصورت خطرناک چیزیں. اب مجھے یہاں ایک مثال ھیںچو کرتے ہیں، کہ ہم چند ایک کی ایک مثال دیتا ہے مختلف لائنوں. تو صرف intuitively یہاں، پہلی سطر کوڈ کا، INT اسٹار X، قرار دیا ہے ایکس نامی ایک متغیر. اور اعداد و شمار کی قسم کیا ہے کہ متغیر کی؟ اس متغیر کے اعداد و شمار کی قسم کیا ہے؟ کہ cliffhanger نہیں تھا. اعداد و شمار کی قسم INT ستارہ ہے. تو اس کا کیا مطلب ہے؟ X گے ایک INT کا پتہ سٹور. کہ کے طور پر آسان ہے. Y ذخیرہ کرنے کے لئے جا رہی ہے ایک INT کا ایڈریس. تیسری لائن کیا ہے کوڈ کا وہاں کیا کر رہے؟ یہ مختص ہے کتنے بائٹس، سب سے زیادہ امکان؟ چار. کیونکہ ایک INT کے سائز کا ہے عام طور پر چار، چار malloc دیتا ہے میرا ایک حصہ کا پتہ واپس میموری، جس بائٹس کی پہلی ہے X میں اب ذخیرہ. اب ہم جلدی سے تھوڑا جا رہے ہیں. سٹار ایکس کا مطلب کیا ہے؟ یہ اس ایڈریس پر جانے کا مطلب ہے کہ اور کیا وہاں تعداد میں ڈال دیا؟ تعداد وہاں 42 رکھو. سٹار Y Y میں کیا ہے پر جانے کا مطلب ہے کہ اور وہاں تعداد 13 ڈال دیا. لیکن ایک منٹ رکو. اس وقت Y میں کیا ہے؟ کیا ایڈریس Y محفوظ ہے؟ ہم نہیں جانتے؟ ہم ایک بار تفویض کا استعمال کرتے ہیں کبھی نہیں Y شامل آپریٹر. تو Y کے طور پر کی دوسری لائن پر اعلان کر دیا کوڈ کو صرف کچھ ردی کی قیمت، ایک بڑا ہے سوالیہ نشان تو بات کرنے کے لئے. یہ تصادفی کی طرف اشارہ کیا جا سکتا ہے یاد میں کچھ بھی کرنے کے لئے، جس میں عام طور پر خراب ہے. تو جیسے ہی ہم وہاں اس لائن کو مارا کے طور پر ستارہ Y،، کچھ برا 13 برابر بہت برا کچھ کے بارے میں ہے Binky ہونے. تو اپ ختم کرنے کے لئے کیا ہو رہا ہے دیکھتے ہیں یہ منٹ میں یہاں Binky ہو یا تو نظر آتے ہیں. [ویڈیو پلے بیک] -ارے، Binky. اٹھو. یہ پوائنٹر تفریح ​​کے لئے وقت ہے. کیا ہے؟ اشارہ کے بارے میں جانیں؟ اوہ، goodie. -ٹھیک ہے، شروع کرنے کے لئے، میں ہم اندازہ لگا ایک جوڑے کے اشارہ کی ضرورت پڑے گی. -ٹھیک ہے. اس کوڈ کو دو اشارہ مختص جس integers کی طرف اشارہ کر سکتے ہیں. -ٹھیک ہے، ٹھیک ہے، میں نے دو اشارہ دیکھتے ہیں. لیکن وہ نہیں لگتے ہیں کسی بھی چیز کی طرف اشارہ. -یہ ٹھیک ہے. ابتدائی طور پر، اشارہ نہیں کرتے کسی بھی چیز کی طرف اشارہ. وہ کی طرف اشارہ چیزوں کو کہا جاتا ہے pointees، اور اپ ان کی ترتیب ہے ایک علیحدہ قدم ہے. اوہ، ٹھیک ہے، ٹھیک ہے. مجھے پتہ تھا. pointees الگ ہیں. تو کس طرح آپ کو ایک pointee مختص کرتے ہیں؟ -ٹھیک ہے. ٹھیک ہے، اس کوڈ کو ایک نئے integers مختص pointee، اور یہ حصہ ایکس کا تعین کرتا ہے اس کی طرف اشارہ کرنے کے لئے. -ارے، وہ بہتر لگ رہا ہے. تو یہ کچھ کر بناتے ہیں. -ٹھیک ہے. میں dereference پوائنٹر X ذخیرہ کرنے کے لئے کروں گا اس pointee میں نمبر 42. یہ چال کے لئے، میں نے اپنے جادو کی ضرورت ہوگی محولہ لقب ضبطی کی چھڑی. محولہ لقب ضبطی کی آپ جادو کی چھڑی؟ اہ، یہ تو بہت اچھا ہے. -یہ کوڈ کی طرح لگتا ہے. میں صرف تعداد قائم کی اور کریں گے - -ارے، دیکھو. وہاں جاتا ہے. تو X مندرجہ ذیل پر ایک dereference کر اس pointee تک رسائی کے لئے تیر. اس صورت میں، وہاں 42 ذخیرہ کرنے کے لئے. ارے، تعداد میں ذخیرہ کرنے کے لئے اس کا استعمال کرنے کی کوشش دیگر پوائنٹر کے ذریعے 13، Y. -ٹھیک ہے. میں صرف Y کرنے کے لئے یہاں جاؤ اور گے نمبر 13 قائم ہو جاتے ہیں. اور اس کے بعد کی چھڑی لے محولہ لقب ضبطی اور صرف - واہ! اوہ، ارے. یہ کام نہیں کیا. Binky، کا کہنا ہے کہ مجھے نہیں لگتا Y محولہ لقب ضبطی، ایک اچھا خیال ہے pointee قائم کرنے کی وجہ ایک علیحدہ قدم ہے. اور میں ہم نے کبھی ایسا کیا نہیں لگتا. -ہمم. نقطہ اچھا ہے. جی ہاں، ہم پوائنٹر Y مختص. لیکن ہم نے اسے قائم کبھی نہیں ایک pointee کی طرف اشارہ. -ہمم. بہت اچھا مشاہدہ. -ارے، تم تلاش کر رہے ہیں وہاں اچھا، Binky. آپ Y پوائنٹس تاکہ اسے ٹھیک کر سکتے ہیں ایکس طور پر ایک ہی pointee ہے؟ -بالکل. میں اپنے جادو کی چھڑی استعمال کریں گے پوائنٹر تفویض. ہے کہ ایک ہونے جا رہا پہلے کی طرح مسئلہ ہے؟ -نہیں ہیں. یہ pointees چھو نہیں ہے. یہ صرف اشارہ ایک پوائنٹر تبدیل ایک دوسرے کے طور پر ایک ہی بات کرنے کے لئے. اوہ، میں دیکھتا ہوں. ایکس طور پر ایک ہی جگہ پر اب Y پوائنٹس. تو انتظار کریں. اب Y طے ہو گئی ہے. یہ ایک pointee ہے. تو کیا تم جادو کی چھڑی کوشش کر سکتے ہیں دوبارہ محولہ لقب ضبطی کے سے زیادہ 13 بھیجنے کے لئے. -ٹھیک ہے. یہاں ہے. -ارے، وہ دیکھو. اب Y پر کام محولہ لقب ضبطی. اور اشارہ اشتراک کر رہے ہیں کیونکہ کہ ایک pointee، وہ دونوں 13 دیکھیں. جی ہاں. اشتراک. جو کچھ بھی. تو کیا اب ہم سوئچ مقامات پر جا رہے ہیں؟ اوہ، دیکھو. ہم وقت سے باہر ہیں. لیکن - -صرف تین یاد پوائنٹر قوانین. نمبر ایک، بنیادی ڈھانچے آپ کو ایک پوائنٹر ہے کہ ہے. اور یہ ایک pointee کے دکھاتا ہے. لیکن پوائنٹر اور pointee الگ ہیں. اور عام غلطی ہے ایک پوائنٹر قائم، لیکن ایک pointee دیا بھولنا. نمبر دو، پوائنٹر محولہ لقب ضبطی شروع ہوتا ہے پوائنٹر میں اور اس کے مندرجہ ذیل ہے تیر کے نشان پر اپنی pointee تک رسائی حاصل کرنے کے لئے. ہم سب جانتے ہیں کے طور پر، یہ صرف کام کرتا ہے اگر وہاں واپس ہو جاتا ہے جس کی وجہ سے pointee ہے، نمبر ایک راج. نمبر تین، پوائنٹر تفویض لیتا ہے ایک پوائنٹر اور تبدیلیاں اس کی طرف اشارہ کرنے کے لئے ایک اور پوائنٹر طور پر ایک ہی pointee. تو تفویض کے بعد، دو اشارہ کریں گے اسی pointee کی طرف اشارہ. کبھی کبھی اس اشتراک کہا جاتا ہے. اور یہ کہ سچ میں، یہ وہاں ہے ہی. اب الوداع. [END ویڈیو پلے بیک] DAVID MALAN: اشارہ پر اتنا زیادہ، Binky اگلے ہفتے میں مزید. ہم پیر کو نظر آئے گا.