[Powered by Google Translate] [4 ہفتہ جاری،] [ڈیوڈ J. Malan - ہارورڈ یونیورسٹی] یہ [CS50 ہے. CS50.TV] - یہ CS50 ہے، اور یہ 4 ہفتے کے آخر ہے. تو کچھ اچھی خبر ہے اور کچھ بری خبر ہے. پیر کو کوئی لیکچر اگلے ہفتے، کوئی مسئلہ نہیں مقرر کیا ہے. [طالب علموں اتساہی] تم یہ کہاں جا رہا ہے پسند نہیں کر رہے ہیں. لیکن ہم اس اگلے بدھ بجائے ہو، اور نصاب 1 جمعہ لیکچر کے مطابق بھی ہے اگلے جمعہ تاکہ ہم ٹریک پر رہ سکتے ہیں. لیکن سب کچھ معمول کے مطابق فلمایا جائے گا، تو میں فکر کرنے کی ضرورت نہیں ہے. اور کے حوالے سے 0 کوئز جو ہم ہفتے کے آخر کی طرف کیا کریں گے کورس کے ہوم پیج cs50.net وضاحت پوسٹ امیدوں کے تم کس طرح ہے جب وہ پہلی کوئز آتا ہے. عام طور پر، یہ ایک سے زیادہ پسند ہے، سچے جھوٹے، مختصر جواب، مختصر کوڈنگ مسائل ہو جائے گا. تم جا برابر لاگو کرنے کے لئے کی توقع نہیں کر رہے ہیں ایک مسئلہ یہ ہے کہ آپ ایک pset پر دیکھ، جس کے لئے آپ ایک کمپیوٹر ہے اور debugger طرح، لیکن اس چھوٹے کوڈنگ مسائل کا سامنا ہو گا. اور یقینا، CS50 quizzes کا احساس حاصل کرنے کے لئے کا سب سے بہترین رہنما کی طرح ہیں ہے cs50.net جانے کے لئے، لنک Quizzes، گزشتہ کئی سال آپ کو قابل quizzes کے دیکھ سکتے ہیں. صرف احساس ہے کہ نصاب اسی سال کے دوران ہمیشہ ہے نہیں کیا گیا. کبھی کبھی ہم شامل، کبھی کبھی منہا، اگر ایسا ہے تو آپ کو ان پرانے quizzes میں سے ایک کو کچھ موضوع دیکھ ہے کہ آپ کو کوئی اندازہ نہیں ہے اس کے بارے میں کیا بات کر رہا ہے، یا تو ہے کہ ہم اس کا احاطہ کیا یا یہ کہ ہم اس کا احاطہ نہیں کیا. لیکن میں جائزے کی صورت، اس اتوار، پیر، اور منگل - کے طور پر اتوار کی رات ایک کورس وسیع جائزہ لینے کے سیشن کے طور پر کورس ہوم پیج پر وقت اور مقام کا اعلان کیا جائے گا - آپ سب کو ایک کورس کی تعلیم ساتھیوں کے ساتھ کا جائزہ لینے کا موقع ہے دونوں کے حصے میں اور ایک مکمل طبقے کے طور پر اس سال کے لئے مال، اور وہ لوگ ہمیشہ کی طرح ساتھ ساتھ فلمایا. ٹھیک ہے. تو مزید ado کے بغیر، پاس ایک تبصرہ / شامل / چھوڑ ناکام. تم نے میری نوٹ پچھلی رات دیکھا جا سکتا ہے، اور یہ واقعی میں کچھ اضافی یقین دہانی ہے کہ اگر آپ خاص طور پر کم آرام دہ اور پرسکون یا درمیان میں کہیں ان میں شامل ہیں اور آپ کو آپ کے سر پر صرف تھوڑا سا محسوس کر رہے ہو، احساس ہوتا ہے کہ واقعی بہت عام ہے، اور اس جگہ میں کافی حمایت کا ڈھانچہ ہے، جن میں سے ایک دفتر گھنٹے فی میرا ای میل آخری رات زیادہ بہتر بنانے پر ارادے تھے، بھی احساس ہے کہ اس طرح ایک طبقے کے لئے پاس کی طرح ایک اختیار / ناکام واقعی میں کنارے کو اس طرح ایک کورس کے اتار طریقہ کار کے طور پر مراد ہے، تاکہ پھر اگر تم نے ان 10، 15، 20 گھنٹے خرچ کر رہے ہیں کچھ pset کام پر حاصل کرنے کی کوشش کر رہا ہے اور آپ کو معلوم ہے کہ تم راستے سے 90-95 فی صد ہے لیکن آپ کچھ لات بگ پاس میں نہیں مل / ماڈل کی طرح ٹھیک ہے میں ناکام رہتے ہیں. خیال ہے ہے کہ آپ نے اس طریقہ کار کے ساتھ اپنے دوسرے psets پر توجہ مرکوز تو جا سکتے ہیں یا جو کچھ بھی ہے کہ آپ پر توجہ مرکوز کرنا چاہتا. سو تو احساس ہوتا ہے کہ آپ کو اس آنے والے منگل تک - تکنیکی 5th پیر، لیکن اس دن چھٹی ہے، تو یہ آنے والے منگل - پاس سے سوئچ / درجہ بندی یا اس کے برعکس کرنے میں ناکام رہے. اور اگر تم precipice پر واقعی ہیں اور مکمل طور پر گر کے بارے میں سوچ رہی ہیں، برائے مہربانی لیکچر کے بعد کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے متعلق پکڑنے یا مجھے ایک نوٹ چھوڑ. ہم کم از کم چیٹ سے محبت کرتا ہوں اس سے پہلے کہ آپ adieu بولی تھا. ٹھیک ہے. تو ہم نے آخری بار سے تربیت پہیوں لینے شروع کر دیا ہے. خاص طور پر، ہم نے سٹرنگ پر توجہ مرکوز ہے. جملہ کچھ ہے جو CS50 لائبریری میں اعلان کیا ہے، خاص طور پر جو ہم نے کہ کہا جاتا cs50.h فائل میں اس ہفتے اور اگلے کو دیکھنے کے لئے شروع کر دیں گے. لیکن سٹرنگ واقعی صرف کچھ آسان بنانے ہے جو arcanely حروف * کے طور پر بیان کیا کچھ ہے. چار ہم سے واقف ہیں. یہ صرف ایک کردار ہے. لیکن پیر کے طور پر * کیا denoted؟ >> [طالب علم] پوائنٹر. ایک پوائنٹر. اور ایک پوائنٹر کیا ہے؟ >> [طالب علم] پتہ ہے. یہ ایک پتہ، یاد میں ایک جگہ کی طرح ہے. ایک ایڈریس یا جگہ یا میموری کیا ہے؟ ایک بار پھر، ہم سب ایک ٹمٹم یا رام کی 2 گیگا کے ساتھ لیپ ٹاپ ان دنوں میں سب سے زیادہ ہونے کا امکان ہے، اور اس کا مطلب ہے کہ آپ کے پاس ایک ارب یا 2 ارب بائٹس میموری کی قیمت ہے. اور یہ واقعی نہیں ہے جو اسے جسمانی طور پر کی طرح لگتا ہے کوئی بات، لیکن ایمان پر ہے کہ آپ کو انفرادی بائٹس ہے کہ آپ اپنے لیپ ٹاپ ہے سب NUMBER کر سکتے ہیں - اس یہ بائٹ 0 ہے، 1 بائٹ ہے، بائٹ 2 بلین ہے - اور یہ کہ بالکل وہی جو ایک کمپیوٹر ہے. ، جب آپ کسی ایک کردار کے لئے جگہ مختص، مثال کے طور پر یہ واضح طور پر آپ کے کمپیوٹر کی میموری میں کہیں رہتے ہیں، اور شاید یہ بائٹ 12345 نمبر پر ہے، اور یہ کہ کہیں آپ کے کمپیوٹر کی میموری میں ہے یہاں. اور اس کردار کی تو پتہ 12345 ہے. اب، 0 ہفتے اب ذریعے اس طرح اب تک، ہم واقعی پرواہ نہیں ہے میموری چیزوں میں ہے کیونکہ ہم عام طور پر علامات کا استعمال کہاں محفوظ ہوتی ہیں، متغیر، اور اپنی معلومات میں arrays اصل میں حاصل کرنے کے لئے. لیکن پیر اور زیادہ آج کے طور پر، اب آپ ہیں جا رہے ہیں لکھنے کے پروگراموں کے ساتھ تمام ابیوینجک صلاحیتوں واقعی میں ایک کمپیوٹر میموری جوڑتوڑ لیکن تم دیکھ فٹ، دونوں اچھے مقاصد اور برے کے لئے، کیڑے یہ سب سیکھنے کے اس مرحلے میں ایک بہت عام نتیجہ ہے. لیکن کیا یہ واقعی ایک چار * کیا مطلب ہے؟ چلو آگے واپس جانے کے لئے - اور ہم Binky پر واپس آنے کے طور پر آج وعدہ کیا کریں گے. کی ایک سادہ مثال کے طور پر چلتے ہیں. کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے compare.c کے طور پر اس فائل کو محفوظ کریں، اور مجھے کچھ سانچے کوڈ یہاں ملے تو stdio.h شامل ہیں، مجھے بھی اپنے آپ شامل ہیں دے cs50.h. میں وہاں پر میں زوم کریں گے. آپ کے وزٹرز کا ریکارڈ رکھا مرکزی int، اہم (باطل) لکھنا شروع، اور اب میں اس طرح کچھ کرنا چاہتے ہیں: printf ("آپ کے وزٹرز کا ریکارڈ رکھا سٹرنگ دو:") اور میں تو استعمال کریں سٹرنگ کے GetString ہو جاتا ہے صارف سے ایک سٹرنگ پر حاصل کرنے کے لئے، تو میں ایک دوسرے کے لئے صارف سے کہنے جا رہا ہوں. ("مجھے ایک اور سٹرنگ دے دو:") اور میں نے ان کو اس کے حاصل کرنے کے لئے GetString کے ذریعے کہنے جا رہا ہوں. میں نے اسے ٹی کال کریں گے اس لیے کہ ٹی آتا ہے کے بعد اور ایک تار کے لئے ایک اچھا نام ہے، اگر یہ بہت عام ہے. تو GetString، اور اب میں صرف وویک چیک کرنا چاہتے ہیں اور میں کہنے جا رہا ہوں اگر (== T) تو میں صرف صارف printf بتانا ("آپ کو ایک ہی چیز ہے \ n ٹائپ") جا رہا ہوں؛ ورنہ میں باہر کی طرح ("تم ٹائپ کچھ مختلف ن! \") کچھ پرنٹ جا رہا ہوں یا سزا جو کچھ بھی ہو جائے گا. تو اس طرح کچھ. اس کے بعد، میں نے ہمیشہ کی طرح 0 واپس کر دیں گے جس میں صرف signified کہ کچھ بھی نہیں برا ہوا، اور میں آگے جانے کے لئے اور چلانے کے اس پروگرام مرتب کی جا رہی ہوں. لیکن ہم نے پیر کو اس پروگرام بھاگ گیا، اور اصل میں کہا گیا تھا کہ خوش خوش نہیں ہے اور الوداع الوداع نہیں ہے. رویے ہم نے دیکھا کچھ اس طرح تھا. کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے میرے ذریعہ ڈائریکٹری میں جانا، یہاں میں زوم، اور بنانے کا آپس میں موازنہ. ٹھیک مرتب کیا. مجھے چلانے کا آپس میں موازنہ. مجھے ایک تار دو: ہیلو. مجھے ایک سٹرنگ دو: ہیلو. آپ کو کچھ مختلف ٹائپ! چلو، کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے آسان 50 50، جیسے کچھ کرنے کی کوشش کریں. آپ کو کچھ مختلف ٹائپ! ہیلو، ہیلو. تو واضح طور پر، کچھ یہاں ہو رہا ہے. لیکن کیا کیوں کے لئے وضاحت کی تھی؟ ظاہر ہے، 12 لائن مکمل طور پر غیر فعال ہے. بنیادی یہاں مسئلہ کیا ہے؟ جی ہاں. >> [طالب علم] یہ پتے کا موازنہ کر رہا ہے. جی ہاں، بالکل. یہ اصل میں پتے کا موازنہ کر رہا ہے جس میں خوش اور خوش جمع کیے جاتے ہیں. یہ خط موازنہ نہیں ہے خوش بار بار کیونکہ اصل میں کیا ہوا ہے، اس وقت ہم ہے GetString کا استعمال کرتے ہوئے - یہ بلیکبورڈ پھر ہمارے کمپیوٹر میموری ہے، اور دو کا کہنا ہے کہ میں ایک متغیر S اعلان کے بعد GetString کہتے ہیں. کیا میری یاداشت کی طرح لگتی ہے؟ چلو منمانے کا کہنا ہے کہ کے اس طرح لگ رہا ہے. یہ ایک مربع ہے. کسی بھی وقت اور بہت زیادہ میں سکرین پر میموری کا ایک ٹکڑا تیار ہے اگر یہ 32 بٹیں میں ہے آلے میں اس طرح چوکوں ڈرائنگ یقینا کیونکہ پوئینٹر، پتہ، 32 بٹس ہے. یہ ایک int کے طور پر ایک ہی ہے. اس کمپیوٹر سسٹم کی بنیاد پر مختلف ہوتی ہیں کر سکتے ہیں. ، تم میں سے وہ لوگ جو حقیقت یہ ہے کہ اپنے میک یا PC 64 بٹس ہے کے ساتھ vaguely واقف ہیں کہ اصل میں کرنا ہے کہ آپ کے کمپیوٹر میں 64 بٹ اشارہ کا استعمال کرتے ہوئے کر رہا ہے، 64 بٹ کے پتے، اور اس بات کا upsides میں اپنے کمپیوٹرز ہے پرانے سے بہت زیادہ RAM کر سکتے ہیں. لمبی کہانی مختصر ہے، دن میں واپس جب کمپیوٹر صرف 32 بٹیں کا استعمال کیا پتے کی نمائندگی کرنے کے لئے، آپ بائٹس کی سب سے بڑی تعداد کی نمائندگی کر سکتا اس صورت میں تھا جو اگر آپ کے 32 بٹیں ہیں؟ 4 سو ارب، ٹھیک ہے، کیونکہ 32 2 4 ارب ہے. یہ تعداد نصاب میں بار بار چلنے والی ہے. تو اگر آپ کے پاس صرف 32 بٹس، سب سے زیادہ تعداد ہے جو تم شمار کر سکتے ہیں ہے 4 ارب تقریبا. لیکن یہ چند سال پہلے تک کمپیوٹر کی بنیادی حد کے تھے ، اگر آپ کو 4 ارب کے طور پر اعلی کے طور پر صرف شمار کر سکتے ہیں کیونکہ یہ بات اگر آپ کو RAM 8 گیگا بائٹ یا اس سے بھی RAM کے 5 گیگا خریدتے نہیں ہے. تم نے اس اعلی شمار نہیں ہے، تو کر سکتے ہیں یہ بیکار تھا. آپ صرف آپ کے کمپیوٹر کی میموری کے پہلے 3 یا 4 گیگا بائٹ تک رسائی حاصل کر سکتے ہیں. یہ ایک مسئلہ کی کم ہے، اور آپ MacBook پیشہ اور Dells خرید سکتے ہیں RAM 8 گیگا بائٹ سے بھی زیادہ یا ان دنوں کے ساتھ. لیکن اگر میں اس پروگرام میں بہت صرف ایک پوائنٹر مختص، ایک پوائنٹر کے بلایا، اس طرح سکرین پر دیکھو، کیونکہ درحقیقت ہم واپس چھیل اس پرت کی ضرورت ہے کر سکتے ہیں. میں کہہ رہا ہوں سٹرنگ رہو، لیکن پیر، سٹرنگ واقعی میں چار * ہے، کچھ کردار کا پتہ ہے. تو کی کہ اس تربیت کا پہیا اتار اگرچہ ہم اب GetString استعمال کرتے ہوئے جاری رکھیں گے. لہذا میں نے کا اعلان کیا ہے، اور یہ میموری کا ایک حصہ ہے، 32 بٹیں ہے. ڈیفالٹ کے ذریعہ یاد کیا میں یہاں ہے؟ >> [اشراوی طالب علم کے جواب] یہ کیا ہے؟ >> [طالب علم] ردی کی ٹوکری. >> ردی کی ٹوکری. بالکل. اگر آپ پروگرامر ایک متغیر میں ایک قیمت کو نہیں، کون جانتا ہے کہ یہ کیا ہے؟ جو کبھی کبھی تم خوش ہو جاؤ اور اس 0، ایک اچھی، صاف ڈیفالٹ قدر کی طرح ہے، لیکن پیر کے طور پر ہم نے دیکھا ہے، کبھی کبھی یہ مکمل طور پر بیکار کی ہے، کچھ بہت بڑا مثبت یا منفی نمبر ہے کہ کہاں سے آیا ہے؟ جی ہاں. >> [طالب علم] سے پہلے تقریب. >> جی ہاں. اکثر، تقریب اس سے پہلے کہ وجہ سے یاد کہا جاتا ہو گیا ہے کے طور پر آپ کو یاد میں افعال کو کہتے ہیں، انہوں نے نیچے سے زیادہ سے زیادہ کی جگہ لے، اور جیسے ہی تقریب کی واپسی کے طور پر، کہ میموری reused ہو جائے اگلے آدمی کو بلایا ہو جاتا ہے کی طرف سے، آپ کی میموری کا ایک ہی ٹکڑا کون استعمال کر رہا ہے. اور اگر تم بائیں وہاں ردی کی ٹوکری، سابق اقدار ہے، ہم جب واقعی ہم کچھ نہیں ڈال ہے وہاں کچھ قدر ہونے S غلطی ہو سکتا ہے. تو اس وقت ہمارے RAM اس طرح لگ رہا ہے. اب ہم 7 لائن کے دائیں ہاتھ کی طرف پر GetString بلا رہے ہیں، جو ہم نے ہفتے کے لئے اب کیا کر رہی، لیکن کیا واقعی کر GetString ہے؟ GetString CS50 ملازمین کی طرف سے لکھا گیا ایک چھوٹا سا بڑا ہے کہ میں جیسے ہی صارف شروع ہوتا ہے ٹائپ چابیاں اور ہٹ درج کریں، GetString باہر کے اعداد و شمار کتنے keystrokes صارف زدہ، میں کتنے حروف کے لئے RAM مختص کرنے کی ضرورت ہے ہے. اور جہاں کہ رام سے آتا ہے، کون جانتا ہے؟ یہ آپ کے کمپیوٹر کی 2 گیگا بائٹ یا میموری کی whatnot میں کہیں ہے. لیکن لگتا ہے کہ کمپیوٹر خوش لفظ کے لئے جگہ مل گئی یہیں. لفظ میں ٹائپ H-E-L-L O-. اور اگر ہم حروف کی ترتیب کے طور پر اس کی اپنی طرف متوجہ، ہم اس طرح اپنی طرف متوجہ کر سکتے ہیں. لیکن میں 1 اضافی بات کرنے کی ضرورت ہے. C میں کوئی تار کے آخر میں کیا ہے؟ شہوت انگیز null کردار، جو ہم \ 0 لکھنے. یہ تکنیکی طور پر نمبر 0 ہے، لیکن الٹا سلیش تمام واضح کرتا ہے کہ یہ لفظی 0 تعداد عددی 0 ہے؛ یہ ہے، مثال 0، اقتباس، unquote ہے کہ آپ کو کی بورڈ میں ٹائپ کر سکتے ہیں کے لئے نہیں ہے. تو یہ خوش ہے. اور کیا ہم نے پیر کو کہا ہے کہ GetString کی طرح ایک تقریب ان تمام ہفتے ہوتا ہے اصل میں واپس لوٹنے؟ یہ SE فی ایک تار واپس لوٹنے نہیں ہے کیونکہ یہ واقعی نہیں ہے کا مطلب کیونکہ ڈور کا کوئی وجود نہیں ہے. وہ CS50 لائبریری میں تعمیر کی طرح ہیں. واقعی ایک تار کیا ہے، تکنیکی طور پر؟ >> [طالب علم] یہ پہلا کردار ہے. بالکل. یہ بہت آسانی سے پہلی کردار کا پتہ ہے کہ صارف اندر ٹائپ اگر ایسا ہے تو میرا لفظ خوش بائٹ نمبر 123 میں اور پھر بائٹ 124 نمبر پر ختم ہوتا ہے 125، 126، اور وغیرہ، اگر 0 سے میں نے ابھی میرے بائٹس کی تعداد کیا واقعی GetString واپس آ رہا ہے وہ لفظی تعداد 123 ہے. تو کیا ہو جاتا ہے کے میں ڈال دیا تعداد 123،، خط H نہیں لفظ ہے ہیلو، بہت آسانی سے پتہ جس میں خوش کے پہلے حرف کو تلاش کر سکتے ہیں. لیکن اس کافی کی طرح نہیں لگتا ہے. میں آپ کو ایک تار کے لئے کہا، کردار نہیں. تو ہم یا کمپیوٹر کو کیسے پتہ کہ ELLO کی قسم H کے ساتھ آئی ہے؟ معاہدے کی طرح ہم نے کیا کیا ہے؟ جی ہاں. [طالب علم] یہ خود کہہ رہا ہوں کچھ اور حروف کو تلاش کرنے کے لئے رہتی ہے. بالکل ٹھیک ہے. >> اس کنونشن کے انسانی کمپیوٹر ہے جس میں جب آپ ڈور سے دوچار ہیں، دوسری صورت میں اب چار ستاروں کے طور پر کہا جاتا ہے، آپ کو صرف یہ معلوم کرنا پڑے گا زندگی میں ہر سٹرنگ کے اختتام واقعی صرف لوپ کے لئے ایک کے ساتھ اس پر iterating کہاں ہے، تھوڑی دیر لوپ، جو کچھ بھی، تاکہ جب آپ کو سٹرنگ کے اختتام تلاش اب آپ اس سے اندازہ کر سکتے ہیں، اوہ، مکمل لفظ خوش تھا. پیشگی پروگرامنگ کے تجربے کے ساتھ تم میں سے وہ لوگ جاوا میں جانتے ہو آپ کی لمبائی صرف فون اور دیگر زبانوں میں آپ اس کی لمبائی یا اسی طرح کہہ سکتے ہیں کر سکتے ہیں. ایسا اس لئے ہے کیونکہ زبانوں کا ایک بہت میں، خاص طور پر چیزوں کو بلایا زبانوں شئی کو پر مبنی ہے، کسی چیز کی لمبائی ڈیٹا خود کا ٹکڑا کی محفوظ اندر کی طرح ہے، ہم محفوظ شناخت اور نام اور پیر کے روز ایک طالب علم کے اندر گھروں بہت پسند کرتا ہوں. لیکن C بہت کم سطح ہے. کوئی اشیاء یا کلاس ہیں، اگر آپ ان شرائط کو سنا سے پہلے ہے. آپ کے میموری پتوں ہے. تو یہ دلچسپ اعداد و شمار کرنے والے ڈھانچے کی نمائندگی کرتے پرانے زمانے کی راہ کی طرح ہے. آپ پہلے کردار کا پتہ کی طرح شروع کی قیمت ہے اور پھر کچھ صوابدیدی کنونشن کہ سب پر عمل کرنے سے اتفاق کرتے ہیں. تو کس طرح تار کی لمبائی کو لاگو کیا جاتا ہے، ہم نے تجویز کیا؟ Strlen، strlen، جو تم میں سے بعض اب چند بار استعمال کیا ہے. یہ بہت آسان ہے، ٹھیک ہے؟ یہ کوڈ کا 2 لائنیں کی طرح ہے. یہ بہت کسی قسم کے کے لئے لوپ ہے شاید ایک اضافی مقامی متغیر کے ساتھ،. لیکن strlen پوائنٹر لے تو شروع 0 \ تلاش ہے. اور جیسے ہی کے طور پر یہ پتہ چلا ہے، یہ اقدامات ہیں جو اس سٹرنگ میں لیا ہے کی کل تعداد واپس کر سکتے ہیں. تو ہم نے اس سے یہ نتیجہ نکالنا ہے کہ اگلے پر جاتا ہے کر سکتے ہیں. تو فرض کریں کہ میں ٹی جیسا کہ میں نے اوپر 10 میں نے کیا ہے کا اعلان. یہ کچھ ردی کی ٹوکری کی قیمت ہے. پہلے کون جانتا ہے؟ لیکن میں 10 لائن کے دائیں ہاتھ کی طرف دوبارہ GetString فون کر رہا ہوں. جہاں یہ ختم ہوتا ہے کون جانتا ہے؟ چلو منمانے کا کہنا ہے کہ ہے کہ آپریٹنگ سسٹم کے لئے یہاں راستہ کمرے مل گیا. میں اتفاق H-E-L-L O-ٹائپ دوبارہ، اور ہم اسی طرح کی تصویر کے اپنی طرف متوجہ کر سکتے ہیں. لیکن حقیقت یہ ہے کہ میں نے redrawn اس تصویر ہے جان بوجھ کر ہے کیونکہ وہ اس سے مختلف خوش ہے تو یہاں یہ 456 مقام ہو سکتا ہے، یہ 457 ہے، اور وغیرہ. تو کیا دیا ہے جہاں ایک بار سوالیہ نشان تھا ہو جاتا ہے؟ اس 456 صورت میں. ہم نے ان کی تعداد کو منمانے اٹھا رہے ہیں آج کے بعد میں کیونکہ ہم کچھ کا ایڈریس کیا ہے کے بارے میں بہت کچھ پرواہ نہیں کر رہے ہیں. ہم پرواہ ہے کہ ہم خوش طرح اعداد و شمار میں سے کچھ حصہ کے ایڈریس اعداد و شمار کر سکتے ہیں. تو واقعی سب سے زیادہ لوگوں کو کمپیوٹر سائنس میں جب میموری پتوں کے بارے میں میں بات کر رہے اور خاص طور پر اشارہ کے بارے میں بات چیت کرتے ہوئے بجائے زحمت 123 figuring - کسے پرواہ ہے جہاں یہ سب اصل میں ہے، ہم صرف یہ جانتے ہیں کہ یہ کسی عددی پتے پر ہے - ہم دنیا کو آسان بنانے اور صرف اتنا کہنا ہے کہ کے اس کردار کی طرف اشارہ کرتے ہوئے ہے اور ٹی اس کردار کی طرف اشارہ کرتے ہوئے ہے. اور حقیقت یہ ہے کہ یہ ایک تیر ہے بہت جان بوجھ ہے کیونکہ لفظی اب H اور ٹی میں اشارہ کر رہا ہے دوسرے H میں اشارہ کر رہا ہے کیونکہ اس دن کے آخر میں بات نہیں کیا پتہ ہے، لیکن یہ بات ہے کہ ہم کوڈ کے کچھ حصے کے ساتھ اس پتہ پر اظہار کی صلاحیت ہے کرتا ہے. ہم ان پتوں کو واقعی نہیں ہے ابھی تک ہیرا پھیری ہم تو دیکھو، ہم کہاں interject کر سکتے ہیں اور اشارہ کے ساتھ کام کرتے ترتیب کر سکتے ہیں کریں گے، لیکن اب لائن میں لفظی 12 کیا اقدار ہم موازنہ کر رہے ہیں 12 سطر میں اس کہانی کے مطابق ہے؟ ہم کہہ رہے ہو 123 456 برابر برابر ہے رہے ہیں؟ اور یہ یقینی طور پر نہیں ہوتا. اور conceptually بھی یقینی طور پر اس پوائنٹر نہیں ہے اس کے طور پر ایک ہی کیونکہ تم نے فون کیا دو مرتبہ GetString، اور GetString سپر ہوشیار بننے کی کوشش نہ کرتا، اس کا احساس کرنے کی کوشش نہیں کرتا، اوہ، آپ خوش 5 منٹ پہلے ٹائپ؛ ، مجھے تم سے ایک ہی پوائنٹر دے جیسا کہ میں نے آپ کو پہلے دیا یہ صرف میموری کا ایک نیا حصہ ہر بار جب آپ یہ کہتے ہیں مختص. تو ہم کس طرح اس مسئلہ کو حل کر سکتا ہوں؟ اگر اعلی سطح میں ڈور خوش خوش کا آپس میں موازنہ کرنا چاہتے ہیں - میں اشارہ کے بارے میں کوئی پرواہ نہیں ہے - میں سوال کے جواب کے بارے میں کس طرح کرتے ہیں، کیا صارف ایک ہی چیز ٹائپ کریں؟ یہاں کیا ضروری ہے؟ جی ہاں. [طالب علم] ایک تقریب کا استعمال کریں. >> میں باکس کے ایک تقریب کا استعمال کر سکتے ہیں. میں strcmp، S-T-R-C M-P-نامی ایک تقریب کا استعمال کر سکتے ہیں، کہا کہ سٹرنگ کا آپس میں موازنہ کرنے کے مختصر ورژن. اور مثال کے طور پر اگر ہم میں جانے، 2 موازنہ جو آج handouts کے درمیان ہے، میں بالکل وہی کرتے ہیں. میں نیچے یا 26 اور سب کچھ سطر نمبر 1 سے ہی رکھا ہے، اور اب محسوس یہ حصہ صرف تھوڑا سا تبدیل کر دیا گیا ہے. چلو، ایک لمحے کے لئے 28 لائن کو نظر انداز کریں اور اس پر صرف توجہ مرکوز ہے. پیر کے روز کیا ہم نے کہا کہ STR کا موازنہ کرتا ہے؟ یہ اس کیس میں 2 اشارہ، اور ٹی لینے کے عمل کو برقرار رکھتی ہے، قسم کی تقریبا ان 2 خط پر اپنی انگلی ڈال اور جو اسے کیا کرنا چاہئے لوپ کے لئے تھوڑی دیر لوپ یا ایسا کچھ ہے، اور اس کا کہنا ہے کہ یہ وہی ہے؟ اگر ایسا ہے تو، یہ انگلیاں یا آگے اشارہ چلتا ہے. یہ وہی ہے، یہ ایک ہی، ان، اسی یہ وہی ہے، یہ وہی ہے؟ اہ اور میں اور ٹی دونوں میں سٹرنگ کے آخر میں ہوں. میں کوئی تضادات نہیں مل سکا ہے. جی ہاں، یہ ڈور ایک ہی ہیں. اور کیا STR واپسی اگر 2 ڈور ایک ہی ہیں آپس میں موازنہ، بظاہر؟ زیرو. تو 0 اس معاملے میں اچھا ہے کیونکہ اگر یہ -1 یا +1 واپس، اس کا مطلب یہ ہے کہ S ٹی حروف تہجی کے پہلے یا ٹی کے بعد آنے کے لئے ہوتا ہے. اور مفید ہے، اس لئے ایک تقریب ہے جو آپ کو بتاتا ہے جو سٹرنگ سے پہلے آتا ہے یا اس کے بعد لغت میں؟ [طالب علم] تلاش ہو رہی ہے. >> تلاش اور چھانٹ رہا ہے. تو آپ کو بائنری تلاش یا بلبلا طرح کی طرح کام کرتے ہیں یا طرح ضم کر سکتے ہیں تم ان چیزوں کا آپس میں موازنہ کہاں ہے. ابھی تک ہم کچھ کونے کونے کاٹ کی طرح ہے اور صرف حل کرنے کے بارے میں بات کی تعداد کے تناظر میں کیونکہ یہ اچھا اور آسان ہے کے بارے میں بات کرنے کے لئے، لیکن آپ ڈور، سیب، اور کیلے ضرور موازنہ کر سکتے ہیں، اگر سیب کیلا کے سامنے آنے کی، اسی طرح جانا جاتا ہے کیونکہ تاروں آپ کو صرف روب کی طرح یاد میں ارد گرد ویڈیو میں کیا منتقل ضم طرح سے کر سکتے ہیں اور ہم انتخاب طرح، اندراج کی طرح، اور بلبلا طرح کے ساتھ اسٹیج پر یہاں کیا. تو اور کہاں ہم اس کو لے جا سکتے ہیں؟ چلو، اس کی کوشش ہے. چلو طرح کی ہے کہ ایک لمحے کے لئے سبق کو بھول جاؤ اور اب کوشش کریں اور مندرجہ ذیل کام کریں 1.c کاپی. اوپر 21 میں پرنٹ کچھ کہہ رہی ہوں، تو میں صارف سے ایک تار ہو رہا ہے، تو میں اس کی جانچ پڑتال کر رہا ہوں. ہم اس عادت میں واقعی نہیں ہے ابھی تک ہو گیا، لیکن اب ایسا. واپس اس پرت کے چھیل دراصل دو. یہ واقعی میں چار * ہے. یہ آدمی واقعی میں چار * ہے. تو اس کے == نل اگر چیک کرنے کا کیا مطلب ہے؟ یہ پتہ چلا ہے کہ آپ GetString طرح ایک تقریب میں جب فون یا اس سے زیادہ عام طور پر صرف ایک کمپیوٹر سے آپ کو کچھ یاد دینے کا مطالبہ کچھ گڑبڑ ہو سکتی ہے. تم پاگل ہو اور میموری کا ایک terabyte کے لئے کمپیوٹر کو پوچھ سکتے ہیں میموری کی شراکت صرف کمپیوٹر میں موجود نہیں ہیں کے کھربوں کے لئے مطالبہ کرتے ہوئے، لیکن GetString اور دیگر کام کرتا ہے تم پر چللا کے کچھ طریقہ کی ضرورت ہے اگر آپ بہت زیادہ کے لئے کہا جاتا ہے. اور جس طرح سے GetString یہ ہے ہے اگر آپ کو مزید میموری کے لئے کہا ہے سے کمپیوٹر میں دستیاب ہے، یہاں تک کہ اگر اس کے سپر، سپر کم امکان ہے کیونکہ ہم میں سے کوئی بھی ایک ٹریلین حروف ٹائپ کریں تو درج کریں مارا جا رہے ہیں، لیکن کم امکان ہے اگرچہ ہو سکتا ہے، میں اب بھی اس کے لئے صرف میں کیس چیک کرنے کے لیے کرنا چاہتے ہیں، اور خصوصی قدر کہ GetString، جواب، اور دیگر افعال کی واپسی اگر کچھ گڑبڑ گیا ہے تمام بڑے حروف میں نل ہے. اور کیا نل ہے؟ نل بہت پوائنٹر کی نمائندگی کرنے ہوتا ہے. یہ میموری ایڈریس 0 ہے. دنیا منمانے کہ فیصلہ کیا ہے، اگر یہ اپنے کمپیوٹر کی میموری ہے - تم جانتے ہو کیا؟ - ہم صرف ہر کمپیوٹر کی میموری کی 1 بائٹ چوری کرنے جا رہے ہیں، اور یہ 0 محل وقوع ہے. ہم یہ نل کی عرفیت دینے جا رہے ہیں، اور ہم وعدہ جا رہے ہیں کہ ہم واقعی اصلی ڈیٹا کو کبھی نہیں وہاں ڈال دیں گے کیونکہ ہم صرف منمانے ایک خاص قیمت، 0، ارف نل کی ضرورت ہے، تا کہ ہم صارفین کو چللاو اگر کچھ غلط ہو جاتا ہے کر سکتے ہیں. ورنہ آپ نہیں جانتے 0 مطلب یہاں کچھ ڈال سکتا ہے یا تو اس کا مطلب یہ ہے کچھ غلط ہو گیا ہے؟ ہم سب اس بات پر متفق کہ نل کا مطلب کچھ بھی نہیں واپس کر دیا گیا تھا ہے، نہیں اصل ایڈریس کو واپس کیا گیا تھا. اب، میں یہاں صرف میرا میں انسانی کنونشن اپنانے رہا ہوں اہم سے 1 واپس اگر کچھ غلط ہو جاتا ہے. ایسا اس لئے ہے کیونکہ اہم واپسی کنونشن 0 اگر اچھی واپس، 1 یا کچھ اگر برا دیگر قیمت. لیکن GetString اور کسی بھی تقریب کہ میموری نل کی واپسی میں سودے اگر کچھ برا ہوتا ہے. ٹھیک ہے. تو بدقسمتی سے، 27 لائن، ہے اگرچہ سپر آسان ہے، مکمل طور پر سٹرنگ کو کاپی کرنے میں ناکام ہے. کیوں؟ ہم دیکھتے ہیں یہ مندرجہ ذیل کر سکتے ہیں. میں 27 سطر میں دعوی کے کی ایک کاپی بنانے کے لئے اور اسے ٹی بلا رہا ہوں. تو میں 2 ڈور اس وقت کے لئے صارف کا مطالبہ نہیں کر رہا ہوں، میں صرف کی میں قدر کہہ رہا ہوں ٹی میں اچھی کارکردگی کا مظاہرہ کے طور پر کیا جائے چاہئے. تو اب صرف مظاہرہ یہ کس طرح ٹوٹا ہوا ہے، لائن میں، 29 آگے ہے کہ میں کیا کر رہا ہوں؟ پہلے میں کی جانچ پڑتال کر رہا ہوں اگر ٹی کی لمبائی 0 سے بڑا ہے. کچھ سٹرنگ ہے. صارف اندر کچھ ٹائپ کر 32 لائن، بظاہر کیا ہے؟ [اشراوی طالب علم کے جواب] >> حق ہے. تم نے یہ کیا میں نے کہا کہ یہ کر رہی ہے سے قسم کا نتیجہ نکالنا کر سکتے ہیں. لیکن تکنیکی طور پر، یہ کیا کر رہی ہے؟ T [0] کیا کی نمائندگی کرتا ہے؟ [طالب علم] zeroth کردار. >> [Malan] zeroth کردار. یا، انسانی کی طرح، ٹی میں پہلی کردار، جو کچھ بھی ہے، H ہو سکتا ہے اس معاملے میں. اور toupper کرتا ہے کہ وہ کیا کہتی ہے. یہ ٹی کی zeroth کردار capitalizes اور اسے تبدیل. تو اس کا مطلب یہ ہے کہ ٹی کی zeroth کردار، بڑے، اور یہ کہ ایک ہی جگہ میں واپس ڈال دیا. تو اگر میں چھوٹے ہیلو ٹائپ، یہ ایچ سرمایہ چھوٹے H تبدیل کرنا چاہئے لیکن مسئلہ یہ ہے کہ لائنوں میں 35 اور 36 جو میں کرنے کے بارے میں کے ہمیں اور ٹی کے لئے باہر پرنٹ. اور کیا آپ کی hunch ہے؟ میں واقعی میں کیا اگر میں تمام چھوٹے ہیلو میں ٹائپ کو دیکھنے کے لئے جا رہا ہوں؟ طباعت کرنے کے لئے کیا جا رہا ہے؟ >> [اشراوی طالب علم کے جواب] >> یہ کیا ہے؟ چھوٹے [طالب علم] بگ H اور باقی ہے. >> بڑی H اور باقی چھوٹے جس کے لئے ایس یا ٹی؟ دونوں [طالب علم. >> دونوں. بالکل. تو چلو دیکھتے ہیں یہاں کیا ہو رہا ہے. آپ کے وزٹرز کا ریکارڈ رکھا آگے بڑھو اور اس کے مرتب کرنے دو یہ copy1 ہے، تو copy1 ہے. ٹھیک ہے. اندر زوم چلو مجھے آگے بڑھو اور copy1 چلانے، درج کریں، کچھ تو کہو: ہیلو خفی میں. یہ کاپی کو بڑا، لیکن یہ بظاہر اصل بڑا کر ساتھ ساتھ، اس لیے کہ اب اس کہانی میں ہوتا ہے؟ اوپر 27 میں میں سٹرنگ کاپی میں نہیں لگتا، لیکن پھر بھی آپ intuitively ہے امید ظاہر کی کہ ہو سکتا ہے کہ یہ معاملہ ہونا، اگر آپ کو اس تصویر کے بارے میں میں کیا سوچتے ہیں، کیا واقعی میں نے کیا کیا ہے؟ تصویر کے نصف ایک ہی ہے. تو وقت میں واپس رول تا کہ کہانی میں ابھی تک نہیں ہے موجود ہے. S کہانی میں موجود ہیں، لیکن چلو، خوش اس وقت چھوٹے کر سکتے ہیں. تو آپ کے وزٹرز کا ریکارڈ رکھا کو ٹھیک کیا میں نے اصل میں اندر ٹائپ یہاں اس صورت میں ہم H-L-L O-ہے. ہم حروف کی ترتیب کے طور پر اپنی طرف متوجہ کریں گے، اپنے SEPARATOR لائنوں یہاں ڈال دیا اور میری 0 \. تو یہ وہ جگہ ہے جہاں ہم 24 ish کے ذریعے کے طور پر جلد ہی سطر نمبر 1 کے طور پر ہیں، یا اٹھانے کے لئے دیتے ہیں، کو پھانسی دے دی ہے. یہ میری ياداشت کی تصویر ہے. کیا جب میں 27 لائن حاصل کرنے کے لئے ہوتا ہے؟ بس پہلے کی طرح، میں ایک پوائنٹر حاصل ہیں، جو میں نے اس اسکوائر کے طور پر اپنی طرف متوجہ کریں گے. یہ ٹی کہا جاتا ہے. ڈیفالٹ کی طرف سے اس کی قیمت کیا ہے؟ کون جانتا ہے؟ کچھ ردی کی ٹوکری کی قیمت. تو میں خلاصہ ہے کہ دور ایک سوالیہ نشان کے طور پر کریں گے. اور جیسے ہی کے طور پر 27 لائن کے دائیں ہاتھ کی طرف executes، کیا میں ٹی کے اندر رہا ہوں ڈال رہے ہو؟ ایک ہی بات ہے کہ کے میں ہے. تو اگر ایک لمحے کے لئے ہم نے تیر کے اس تجرید ہٹانے اور ہم کہتے ہیں، اوہ، یہ میموری لوڈ پتہ 123 ہے، جب آپ کا کہنا ہے کہ ٹی S، نیم وقفہ ہو جاتا ہے، آپ لفظی 123 ڈال رہے ہیں. اب اگر ہم نے تصاویر کے ساتھ اس قسم کی دوبارہ ہماری دنیا کو آسان بنانے، کیا تم سچ میں کیا ہے صرف آپ کی دنیا میں ایک اور تیر ہے شامل ٹی کی طرف سے ایک ہی عین مطابق سٹرنگ کی طرف اشارہ کرتے ہوئے ہے. تو، جب 31 اور 32 لائن میں ٹی [0] کو تبدیل کرنے کے بارے میں اصل، کیا ٹی ہے [0] اب کے ساتھ بظاہر مترادف ہے؟ [0] تو یہ سب ہو رہا ہے. اور اگرچہ اس طرح خیال ہے کہ تھوڑا سا کم سطح اور arcane اور اس طرح شاید intuitively یہ صرف کام کیا جانا چاہئے جیسا لگتا ہے - میں نے پہلے چیزوں کی کاپیاں کر دیا ہے اور یہ صرف کام کیا - اگر آپ اصل میں واقعی ایک تار کیا ہے میں سوچتا ہوں، یہ ایک چار * ہے. ٹھیک ہے، یہ کیا ہے؟ یہ کچھ کردار کا پتہ ہے. تو شاید یہ زیادہ سمجھ میں آتا ہے کہ تم کچھ کرو جب کوشش کرتے ہیں تم کر رہے ہو سپر اس طرح بظاہر سادہ، کاپی ایک میموری کا پتہ ہے. آپ سٹرنگ خود کے ساتھ کچھ بھی اصل میں نہیں کر رہے ہیں. تو یہاں تک کہ اگر آپ کا کوئی خیال نہیں ہے تو آپ کوڈ میں اس مسئلہ کو کس طرح کو حل کریں گے، اعلی سطحی، conceptually، جو ہم کرنے کی ضرورت ہے TA کے کے حقیقی کاپی کرنے کے لئے، بظاہر؟ جی ہاں. >> [طالب علم] یہ ایک نیا مقام دیا ہے؟ بالکل ٹھیک ہے. >> ہم نے ایک بالکل نئی جگہ دینے کی ضرورت ہے. ہم کسی نہ کسی طرح ایک ایسی دنیا ہے جس میں ہم میموری کا ایک نیا حصہ ملتا ہے پیدا کرنے کی ضرورت ہے، جو میں نے کی وضاحت کے لئے ایک اس کے نیچے اپنی طرف متوجہ، لیکن یہ وہاں کی ضرورت نہیں ہے کریں گے. لیکن یہ ایک ہی سائز کرنے کی ضرورت ہے، تو میں ایک ہی جگہ میں ان عمودی لائنوں کو اپنی طرف متوجہ کریں گے. یہ ٹھیک ہے اگر یہ سب ردی کی ٹوکری میں ابتدائی طور پر ہے. کون جانتا ہے کہ وہاں کیا تھا؟ لیکن مرحلہ 1 کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے زیادہ میموری کے طور پر دینے کی ہے جیسا کہ مجھے اس کی ضرورت ہے ہیلو کی ایک کاپی کو فٹ ہونے کے لئے، تو یہ پتہ لگا کہ کس طرح H یہاں کاپی کرنے کے لئے، یہاں ای، یہاں اور وغیرہ میں. لیکن یہ پہلے ہی تھوڑا واضح محسوس بھی اگر تفصیلات میں سے کچھ اب بھی ہیں خلاصہ چاہئے. اس میں اس جملے کو کاپی کرنے کے لئے، یہ صرف ایک اس لوپ یا دیر لوپ کے لئے ہے یا کچھ اور جس کے ساتھ آپ سب سے زیادہ واقف ہو گئی ہو. تو اس کی کوشش ہے. کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے copy2.c میں جانے دو. copy2.c میں ہم 27 لائن کے علاوہ تقریبا ایک ہی پروگرام ہے. یہ ایک چھوٹا سا پیچیدہ لگتا ہے، لیکن اگر ہم اس کو نیچے ٹکڑوں میں پیش کی توڑ بائیں جانب ایک ہی ہے. چار * یاد میں اس بات کو تخلیق کرتا ہے، ایک سوال کے نشان کے ساتھ ہی سہی کیونکہ ہم نے کوئی اندازہ نہیں ہے کیا ڈیفالٹ کی طرف سے ہے. دائیں ہاتھ کی طرف پر اب ہم ایک نئے تقریب malloc، شروع کر رہے ہیں، میموری کے لئے مختص ہیں، آپ کے وزٹرز کا ریکارڈ رکھا میموری دے، اور یہ بظاہر کتنے دلائل، کتنے قوسین کے اندر اندر چیزوں؟ لیتا ہے میں 1 اور 2 کے murmurings سنی ہے، لیکن یہ صرف 1 ہے. کوئی کوما، جس کا مطلب ہے کہ قوسین کے اندر صرف 1 بات ہے ہے. اگرچہ دیگر قوسین ہے، آپ کے وزٹرز کا ریکارڈ رکھا اجاگر outermost قوسین کے اندر کیا ہے، اور اس اظہار ہے: (strlen (زبانیں) 1 +) * sizeof (چار). لہذا اگر ہم واقعی میں لگتا ہے کہ اس کے ذریعے یہ کہہ رہا ہے کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے کے کی لمبائی ہے. میں کیوں ہوں، اگرچہ، کی حد پر 1 انہوں نے مزید کہا؟ >> [اشراوی طالب علم کے جواب] بالکل. ہم دم میں اس آدمی کے لئے جگہ، چھٹی کردار ہے کہ کوئی انگریزی کا مطلب ہے کی ضرورت ہے لیکن خصوصی پروگرام معنی ہے. تو ہم اس کے لئے 1 + کی ضرورت ہے کیونکہ، strlen ریٹرن کی لمبائی کی انسانی امید ہیلو یا 5، یہ آپ کو نہیں دے اضافی شہوت انگیز null کردار. تو میں 1 + کے ساتھ دستی طور پر یہ شامل کریں. اور پھر یہ * کے سائز (حروف)، ہم سے پہلے اس کو نہیں دیکھا ہے. یہ تکنیکی طور پر ایک تقریب نہیں ہے. یہ ایک خصوصی مطلوبہ الفاظ کی ہے کہ صرف آپ کو بتاتا ہے جو سائز ایک کمپیوٹر پر کچھ ڈیٹا کی قسم کی ہے حقیقت میں، کیونکہ ہم میں سے کچھ 32 بٹ کمپیوٹر ہے. میں نے گھر میں ایک بہت پرانے کمپیوٹر ہے، اور یہ صرف 32 بٹیں کا استعمال کیا جاتا ہے اشارہ کی نمائندگی کرنے. اور اگر ایسا ہے تو میں ایک ڈیٹا کی قسم کا سائز کیا، 32 بٹس ہو سکتا ہے. لیکن اگر میں اپنے نئے پسند ہیں کمپیوٹر کا استعمال کرتے ہوئے کر رہا ہوں، میں 64 بٹس کی قدر کو واپس حاصل کر سکتے ہیں ایک ایڈریس کی طرح کسی چیز کے لئے. تو اس معاملے میں، صرف سپر محفوظ کرنے کے لئے، ہم جیسے ہارڈ کے کوڈ کا کچھ نہیں جا رہے ہیں - ٹھیک ہے، کیا جو ہم نے اب تک کہا ہے کے مطابق چار کا سائز کیا ہے؟ ہم بہت زبانی طور پر کہا ہے کہ اسے 1 بائٹ ہے، اور یہ کہ بورڈ بھر میں بہت درست ہے. لیکن پھر مفروضات خراب ہو جاتے ہیں. وہ چھوٹی گاڑی سافٹ ویئر کی قیادت اگر لوگ طریقوں سے آپ کا ارادہ نہیں کیا میں آپ کے سافٹ ویئر کا استعمال کریں. لشکر طیبہ کا خلاصہ دور اور generically تو کہنا میں میموری کی یہ بہت مقدار کی ضرورت ہے اور میموری میں سے ہر ایک حصہ ایک کردار کے سائز کے برابر ہونا چاہئے، جو اس صورت میں 1 کے برابر حقیقت میں ہے، لیکن یہ اسے لکھنے کی ایک سے زیادہ عام طریقہ ہے. تو اگر لفظ ہیلو ہے، کتنے بائٹس malloc ہیلو کے لئے بظاہر مختص ہے؟ چھ [طالب علم. چھ. >> بالکل کے طور پر کئی کے طور پر ہم سکرین پر سوال نمبر ہے. اور پھر اب GetString آپ کی سمجھ کی بنیاد پر لگتا ہے کہ کیا malloc شاید واپس کرتا ہے؟ >> [طالب علم] پتہ ہے. کیا پتہ ہے؟ میموری کا پہلا حصہ. ہم وہاں کوئی اندازہ نہیں کیا ہے کیونکہ کسی اور تقریب اس میموری سکتا ہے پہلے کا استعمال کرتے ہوئے ہے. لیکن malloc، GetString کی طرح، میموری کے پہلے بائٹ کے ایڈریس واپس کہ یہ آپ کے لئے ایک طرف رکھ دیا ہے. تاہم ایک الٹا سلیش شہوت انگیز null کردار کے ساتھ، کیا یہ نہیں کرتا ہے اس کو خالی میں بھرنے ہے کیونکہ یہ بدل جاتا ہے تم باہر malloc کا استعمال کرتے ہوئے کچھ بھی مختص کر سکتے ہیں: ints، ڈور، arrays، floats، طالب علم ڈھانچے. آپ مکمل طور پر malloc generically استعمال کر سکتے ہیں. اس کی پرواہ نہیں ہے یا پتہ ہے جو آپ کے لئے میموری آونٹن کر رہے ہیں ہے. تو اس malloc کے لئے presumptuous ایک 0 \ ڈال میموری کا ہر حصہ کے آخر میں یہ آپ کو دے رہی ہے کیونکہ یہ \ 0 چیز صرف ڈور کے لئے ایک کنونشن ہے. یہ ints کے لئے استعمال نہیں ہے، یہ floats کے لئے استعمال نہیں ہے، اس کے طالب علموں کے لئے استعمال نہیں ہے. اور اس ہی malloc کے ساتھ پکڑ لیا ہے کہ یہ بوجھ تم پر مکمل طور پر پروگرامر ہے یاد ہے تم کتنے بائٹس مختص اور لوپ کے لئے کبھی نہیں کرنے کے لئے استعمال یا دیر لوپ اور میموری کا حصہ تمہیں دیا گیا سرحد کے ماضی میں جانا ہے. ایک اور طریقہ ڈالو، جیسے ہی تم میموری مختص آپ کو آپریٹنگ سسٹم سے نہیں کر سکتے، اوہ، ویسے، یہ کس طرح میموری کا ایک حصہ کے بڑے تھا؟ یہ آپ پر منحصر ہے کہ اگر آپ کو اس قدر کی ضرورت ہے یاد ہے. تو دیکھتے ہیں کہ میں کس طرح اس میموری کو استعمال کرنے کے لئے آگے بڑھنے. لائن 28 اور 29 میں کیوں میں یہ کر رہا ہوں؟ بس کل وویک چیک. بس اگر کچھ غلط ہو گیا، میں میموری میں سے کچھ پاگل رقم کے لئے سے دعا گو ہیں یا میں اتنی ساری چیزیں کمپیوٹر پر چل رہا ہے کہ وہاں صرف کافی میموری نہیں ہے، اس طرح کچھ، میں کم از کم اتارنا null کے لئے چیک کرنے کے لیے کرنا چاہتے ہیں. حقیقت میں، سب سے زیادہ کمپیوٹر آپ برم دے گا کہ ہر پروگرام آپ کے RAM کے مکمل استعمال کر سکتے ہیں، لیکن اس کے باوجود، اگر کوئی پاگل طویل ہو سکتا ہے سٹرنگ میں صارف اقسام کیونکہ وہ ایک برا آدمی ہے اور وہ اصل میں اس میں اپنے پروگرام یا ہیک کریش کرنے کی کوشش کر رہے ہیں، آپ کو کم از کم malloc کی واپسی کی قیمت چیک کرنے کے لیے چاہتے ہیں اور چاہے وہ شہوت انگیز null برابر. اور اگر اس سے فرق پڑتا ہے، بس ابھی کیونکہ میں نہیں جانتا کہ کیا اس صورت میں کیا کرنا چھوڑ. میں سٹرنگ کیسے کاپی کروں؟ کچھ ایسا کرنے کے طریقوں ہے. ہیں STR سی کام کی کاپی ہے، لیکن یہ انتہائی آسان ہے کے لئے ہمیں اس طرح پرانے زمانے کرنا ہے. پہلے مجھے اعداد و شمار کے کی لمبائی ہے. میں نے اس لوپ میں ڈال کر سکتے ہیں لیکن بجائے میں صرف وضاحت کے لئے یہاں ڈال. تو (ن) اب اصل سٹرنگ کی لمبائی ہے، جو بظاہر 5 ہے ذخیرہ. اس کے بعد میں میرے لیے لوپ میں 0 سے iterating رہا ہوں ن، اور میں ہر iteration پر ڈال رہا ہوں [] ٹی کے اندر [میں]. تو یہی ہے جو میں میری 2 سے پہلے ڈور میں کی طرف اشارہ کرتے ہوئے انگلیوں کے ساتھ تقاضا ہے. لوپ کے لئے یہ اس طرح iterates، میں یہاں میں ایچ کاپی رکھا جائے جا رہا ہوں، یہاں میں یہاں، L میں ای ہے کیونکہ اس کی ہے، اس ٹی ہے. اور پھر آخر میں، 35 سطر میں کیوں میں نے یہ کر رہا ہوں؟ میں اس بات کا یقین کر لیں کہ میں سٹرنگ ٹی کو ختم کر رہا ہوں بنانے کے لئے کی ضرورت ہے. اور میں نے اسے اس طرح کیا سپر واضح ہے. لیکن، کسی تجویز، اگر آپ کر سکتے، یہ سب کرنے کے مختلف طریقے. میں 35 لائن واقعی ضرورت نہیں ہے. ایسا کرنے کا ایک طریقہ ہے. جی ہاں. >> [اشراوی طالب علم کے جواب] >> کا کہنا ہے کہ یہ زور. [طالب علم] سے کم یا برابر ہے. بالکل ٹھیک ہے. >> ہمیں اس کے لئے کم سے کم یا صرف (ن)، جو عام طور پر بری کر دیا گیا ہے کے برابر کہہ سکتے تقریبا ہمیشہ جب ہم بات ہم گنتی کر رہے ہیں ایک برابر ہے کیونکہ ہم مرحلہ نمبر 1 کو بہت دور سے جاتے ہیں. لیکن یاد رکھنا، ہم کتنے بائٹس مختص کیا؟ ہم نے کے کی strlen مختص، 6 کل کے لئے 5 1 +. تو ہم اس معاملے میں کچھ اس طرح کر سکتے ہیں تاکہ ہم ہی آخر میں ہی نہیں بلکہ خوش 0 \ کاپی کر رہے ہیں. دوسری صورت میں، ہم نامی STR نقل تقریب کا استعمال، strcpy کر سکتا ہے، لیکن اس سے تقریبا زیادہ سے زیادہ مزہ نہیں ہوگا. لیکن اس کے یہ ہڈ کے نیچے ہے. پھر آخر میں، ہم نے پہلے کے طور پر ایک ہی بات کرتے ہیں. میں ٹی اور پھر فائدہ میں یہ دعوی کرتے ہیں کہ اصل اور اس نقل اس طرح لگ رہا ہے کی طرح لگتا ہے. تو اب یہ کرنے کی کوشش کریں. کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے یہاں دو copy2 بنائیں. ہم میں زوم اور copy2 چلانے ہوں گے. میں چھوٹے ہیلو میں ٹائپ جا رہا ہوں، بلکہ میں اصل کے طور پر چھوٹے ہیلو لیکن نقل کے لئے خوش دارالحکومت. لیکن میں ابھی تک نہیں کیا ہے. میں 1 آخری چیز یہاں کرنے کی ضرورت ہے. 46 اور 47 واضح طور پر میموری آزاد ہے، لیکن کہ اصل میں کیا مطلب ہے؟ میں کیا کر رہا ہوں، کیا آپ کو لگتا ہے کہ ہے، کی طرف سے 46 لائن اور 47 اوپر بلا ہے؟ اس کا کیا اثر ہے؟ جی ہاں. [اشراوی طالب علم کے جواب] بالکل. >> تم نے صرف آپریٹنگ سسٹم کہہ رہے ہیں، ارے، اس میموری کے لئے شکریہ. آپ اب یہ کسی اور کے لئے استعمال کر سکتے ہیں. اور ردی کی ٹوکری کے اقدار کی ایک بہترین مثال ہے. میں صرف اس میموری کو استعمال کیا ہے. لفظ 2 مقامات میں خوش لکھنے، یہاں، یہاں، یہاں، یہاں اور تو یہ 0 ایچ ای-L-L O-\-ہے. لیکن اس وقت میں 46 لائن اور 47 لائن فون، اور تمہیں پتہ ہے کہ تصویر کے لحاظ سے ہوتا ہے؟ اصل میں، انتظار کریں، اس تصویر کی عمر میں سے ایک ہے. ایک بار ہم کاپی بنا، اس آدمی کو اصل میں یہاں اشارہ کر رہا ہے، تو نمبر اور ہمارے تیر کے طور پر ہٹانے کے صرف دور خلاصہ پھر. اس تصویر میں کیا ہوتا ہے جب میں فون مفت ہے؟ [اشراوی طالب علم کے جواب] بھی نہیں >>. اگر میں فون پر مفت اور ٹی - ایک چال کے سوال کی قسم - بالکل اس تصویر کو تبدیل نہیں کرتا کے بلا اور بلا وجہ سے ٹی آپریٹنگ سسٹم بتاتی ہے، ہے، تم اس میموری کو دوبارہ استعمال کرتے ہیں، لیکن اس شہوت انگیز null تبدیل نہیں ہوتا کر سکتے ہیں یا کوئی خاص کردار، اس کو تبدیل نہیں ہے، یہ ک یا ای یا کچھ اور کسی بھی جگہ L یا ایل یا اے تبدیل نہیں ہوتا. تصویر کے لحاظ سے، جیسے ہی آپ کو مفت، کچھ بھی نہیں تبدیلیاں فون. اور اس میں ردی کی ٹوکری میں اقدار کی اصل جھوٹ کیونکہ اگر میں تو بعد میں اس پروگرام میں کہ GetString یا malloc یا کی طرح کچھ کے ساتھ زیادہ سے زیادہ میموری کے لئے آپریٹنگ سسٹم سے پوچھو اور آپریٹنگ سسٹم کا کہنا ہے کہ، اس بات کا یقین، میں 12 بائٹس میموری کا صرف آزاد کر، ان استعمال کرتے ہیں، کیا آپ کے حوالے کیا جائے جا رہے ہیں؟ آپ میموری کا ایک حصہ ہے کہ ہم عام طور پر اپنی طرف متوجہ کرے گا کے حوالے کی جائے جا رہے ہیں سوال نمبروں کے ساتھ، لیکن کیا وہ سوال نمبر ہیں؟ انہوں نے H-L-L-O، H-L-L O-ہوا. یہ ہمارے نئے ردی کی ٹوکری اقدار جیسے ہی کے طور پر آپ کو اس میموری کو آزاد ہیں. ایک حقیقی دنیا مطلب یہاں بھی ہے. یہ RAM کے ساتھ کیا ہوتا ہے، لیکن آپ کے کمپیوٹر اصل ڈسک سے ایک ہی بات کرتے ہیں. ہم نے اس کے بارے میں خاص طور پر مستقبل میں مسئلہ سیٹ ہے کہ عدالتی پر مرکوز کے ساتھ بات کریں گے. لیکن جو اصل میں ہوتا ہے اگر آپ کو اپنے ڈیسک ٹاپ پر کچھ حساس مالیاتی فائل ہے یا کچھ خاکہ JPEG اور آپ یہ آپ کے ردی کی ٹوکری میں کھینچ کر لائیں، جب آپ نے اسے ردی کی ٹوکری یا ریسایکل بن میں کھینچ کر لائیں کیا ہوتا ہے؟ تمہیں معلوم ہوتا کہ میں کے بارے میں بات کر رہی تھی. [ہنسی] جب آپ اپنے ریسایکل بن یا ردی کی ٹوکری میں کر سکتے ہیں میں اس کے ثبوت گھسیٹ لیا ہے تو کیا ہوتا ہے؟ [اشراوی طالب علم کے جواب] اچھا، تو ہوشیار. جب آپ ایسا کرتے ہیں تو کیا ہوتا ہے؟ مختصر جواب کچھ بھی نہیں ہے، ٹھیک ہے؟ خاکہ یا حساس فائل اب بھی بس وہاں ہے آپ کی ہارڈ ڈرائیو میں بیٹھے کہیں. ہم میں سے زیادہ تر کم از کم مشکل راستہ ہے کہ آپ کو آپ کی ردی کی ٹوکری خالی کرنے کی ضرورت سیکھا ہے یا اپنے ریسایکل بن میں اصل فائلوں کو خارج کرنے کی. اور یقینا، تم صحیح جب یا آپ کے ردی کی ٹوکری پر کلک کنٹرول کلک کر سکتے ہیں یا فائل، خالی ردی کی ٹوکری یا جو کچھ بھی منتخب اور آپ اصل میں خالی ردی کی ٹوکری میں کر سکتے ہیں یا ریسایکل بن میں، جو اصل میں اس تصویر ہوا تو؟ اور کچھ بھی نہیں ہے. تو کچھ نہیں اصل میں ڈسک پر ہوتا ہے. اور اگر ہم صرف عارضی طور پر لکھنے digress - I'll صرف اس کے پیچھے کا استعمال کریں. تو اب کہانی RAM، جس ہے جہاں پروگراموں کا کوئی وجود ہے سے تبدیل کر رہا ہے جب تم انہیں ڈسک پر چلا رہے ہیں، جو وہ جگہ ہے جہاں وہ طویل مدتی محفوظ کیا جاتا ہے اس وقت بھی جب اقتدار، اب کے لئے جاتا ہے - اور ہم مستقبل میں اس پر واپس آ جائیں گے - چلو صرف دکھاوا ہے کہ یہ آپ کے کمپیوٹر کی ہارڈ ڈرائیو کے اندر کی نمائندگی کرتا ہے کیونکہ وہ واپس دن میں سرکلر ڈسک فلاپی ڈسک کی طرح استعمال کیا. تو اگر آپ کو کچھ حساس ایکسل فائل ہے، اس میموری کے اس حصہ لے سکتے ہیں آپ کے کمپیوٹر کی ڈسک پر، اور میں نے صرف ایک ہی صوابدیدی 1s اور 0s ڈرائنگ رہا ہوں. ، جب آپ کو آپ کے ردی کی ٹوکری میں اس طرح فائل کھینچ کر لائیں بن کو ری سائیکل کر سکتے ہیں یا literally کچھ بھی نہیں ہوتا ہے کیونکہ ایپل اور مائیکروسافٹ کا فیصلہ کیا ہے ردی کی ٹوکری میں کر سکتے ہیں اور ریسایکل بن میں واقعی میں صرف ایک عارضی پلیس ہولڈر ہے. شاید بالاخر OS یہ آپ کے لئے خالی ہے، لیکن عام طور پر، یہ کچھ بھی نہیں ہے، کم سے کم جب تک کہ تم جگہ پر بہت کم ہیں. تاہم، جب آپ خالی ردی کی ٹوکری یا ردی ٹوکری خالی اسی طرح، کچھ بھی نہیں اس تصویر کا کیا ہوتا ہے. یہ سب ہوتا ہے دوسری جگہوں پر آپ کے کمپیوٹر پر ہے، اس ٹیبل کے کسی قسم ہے. یہ ایک چھوٹا سا دھوکے باز شیٹ ہے جو یہ کہتا ہے کہ یہ ہے کہ، کا کہنا ہے کہ، resume.doc طرح ہے، تو، اپنی ہارڈ ڈسک پر 123 مقام پر رہتے تھے مائیکروسافٹ ورڈ فائل میں اپنے ریزیومے میں میموری نہیں ہے اور لیکن نہیں RAM میں اپنی ہارڈ ڈسک پر اور خاکہ 456 میں JPEG زندگی، اور آپ کے ایکسل فائل کو 789 یا جہاں بھی رہتے ہیں. جب آپ اصل میں ردی کی ٹوکری یا ریسایکل بن میں خالی کرنے سے فائلوں کو خارج کر دیں، اس تصویر تبدیل نہیں ہوتا. 0s اور آپ کی ہارڈ ڈرائیو پر 1s کہیں بھی نہ جاؤ. لیکن یہ میز، اس طرح کی چھوٹی سی ڈیٹا بیس، تبدیلی کرتا ہے. جب آپ کو اپنے ریزیومے کو حذف کرتے ہیں، جیسے فائل کچھ معنوں میں خارج کر دیا ہے، لیکن تمام کمپیوٹر ہے بھول جہاں اس چیز کو آپ کی ہارڈ ڈرائیو پر رہتا ہے. 0s اور 1s جو اپنے ریزیومے یا ان دیگر فائلوں کی کسی تحریر اب بھی برقرار ہیں. تو اگر آپ نے اس غلطی سے کیا ہے، وہاں اب بھی ایک غیر صفر امکان ہے کہ آپ کو آپ کے ڈیٹا کی وصولی نورٹن کی افادیت یا کسی تجارتی سافٹ ویئر کا استعمال کرتے ہوئے کر سکتے ہیں زندگی میں جس کا مقصد تلاش 0s اور 1s کی طرح کیا گیا ہے یتیم ہے، یہاں بھول لیکن یہاں چھوڑ دیا، تا کہ آپ کو آپ کے ڈیٹا واپس لا سکتا ہے. یا پولیس یا ایف بی آئی کے ساتھ عدالتی تفتیش کاروں کی ایک ہارڈ ڈرائیو اصل میں لیں گے اور اصل میں 0s اور 1s کہ ایکسل فائلوں کی طرح JPEGs طرح دیکھو دیکھو، پیٹرن کے لئے دیکھو، اور انہیں اس طرح یہاں تک کہ اگر کمپیوٹر ان بھول گئے وہاں ٹھیک ہے. تو، صرف واقعی راستہ ہے جس سے ڈیٹا کو خارج کرنا، جیسا کہ ہم مستقبل میں بات چیت کریں گے یا مسح فائل یا ہارڈ ڈسک صاف ہے - آپ واقعی 0s اور 1s سے نجات نہیں حاصل کر سکتے ہیں کیونکہ دوسری صورت میں آپ کو ایک گیگا بائٹ کی ہارڈ ڈرائیو کے ساتھ شروع ہوتا اور آپ ایک میگا بائٹ کی ہارڈ ڈرائیو کے ساتھ اگر آپ مسلسل حذف کرنے کر رہے تھے چاہتے ہیں، لفظی 0s، اور 1s. تو جو تم کرتے ہو اگر آپ واقعی میں آپ کی پٹریوں کا احاطہ کرنے چاہتا تھا اور بنیادی مسئلہ یہ ہے کہ وہاں اب بھی ہے 0s اور ڈسک پر 1s؟ میں gesticulating ہے کہ آپ کے آلے جسمانی طور پر توڑ کسی دیکھتے ہیں. یہ کام کرے گا. [ہنسی] لیکن اگر کہ ایک مہنگا حل کی طرح ہے، زیادہ مناسب کیا ہو گا؟ جی ہاں. >> [طالب علم] ان سے ادلیکھت. >> انہیں کس کے ساتھ ادلیکھت ہو؟ >> [طالب علم] دیگر ڈیٹا. دیگر ڈیٹا. آپ 0s یا 1s یا تمام 0s، تمام 1s کے ساتھ آپ کی ڈسک صرف ادلیکھت کر سکتے ہیں. اور یہ یقینا ہے جو سافٹ ویئر کی کچھ کرتا ہے. آپ کے سافٹ ویئر خریدنے یا اس سے بھی آزاد سافٹ ویئر حاصل کر سکتے ہیں، اور یہاں تک کہ میک OS میں ان دنوں کی تعمیر، کم تو ونڈوز میں، محفوظ طریقے سے ختم کرنے کی صلاحیت ہے. اصل میں، اگر آپ آج تمام رن گھر کرنا چاہتے ہیں اگر آپ ایک میک ہے اور ایسا کرتے ہیں، اگر آپ کو مل گیا ہے آپ کے کوڑے دان میں کچھ چیزیں کر سکتے ہیں، کر سکتے ہیں اور محفوظ خالی ردی کی ٹوکری میں کرتے ہیں، جو بالکل وہی ہے. بلکہ یہاں صرف مٹائیں فائلوں سے، اسے یہاں 0s اور 1s مٹا نہیں ہے، بلکہ یہ صرف ان سب کو تبدیل، مثال کے طور پر 0s اور ڈاٹ، ڈاٹ، ڈاٹ،. تو آپ کے مستقبل psets کی ایک جان بوجھ کر ڈیٹا کی بحالی اصل میں ہو جائے گا - تصاویر کہ ہم لوگ، کیمپس، جگہوں اور چیزوں کے لے لیا ہے جس کے لئے ہم نے ایک ڈیجیٹل کیمرے کا میموری کارڈ کے عدالتی تصویر بنا دیں گے، جو بالکل وہی خیال ہے - اور آپ کو اصل میں تلاش کرنے کا چیلنج دیا پڑے گا پیٹرن ہے کہ آپ کی ہارڈ ڈرائیو پر JPEGs کی نمائندگی کرتے ہیں، کہ سابق طالب علم ہے جن کا ای میل کی طرح میں چند ہفتے پہلے پڑھا کیا اس کی بہن کی تصاویر کی وصولی کے لئے. ہم 5 منٹ کے وقفے کیوں نہیں یہاں لے، اور ہم نے یاداشت پر regroup کریں گے. تو یہاں ہے جہاں چیزیں ایک چھوٹا سا ذہن موڑنے ملتی ہے، لیکن یہ ایک بہت طاقتور قدم ہے یہ سب زیادہ سمجھنے کی طرف. نامی pointers.c پروگرام ہے. یہ آج کے نمونے کے کوڈ میں شامل ہے. نوٹس ہے کہ پہلے چند لائنوں میں 22 کے ذریعے 19، ہم سب کر رہے ہیں GetString طرح کچھ ہے اور پتہ آرہے ہیں، کے میں ذخیرہ کرنے. بھی 3 pset کے لئے آج کے بعد اگر آپ چاہتے ہیں لیکن 4 pset اور آپ اپنے دور ان کی تربیت پہیوں کہاں سے شروع کر سکتے ہیں، کوئی دکھاوا کہ ڈور اب موجود وجہ ہے. یہ یقینی طور پر صرف چار * کہہ شروع ٹھیک ہے. ایک طرف ایک کے طور پر، آپ کو آن لائن حوالہ جات میں اور کتابوں میں ستارہ اکثر متغیر کے ساتھ دیکھ سکتے ہیں. آپ کے پاس اس کے دونوں اطراف کے ارد گرد خالی جگہوں کو بھی دیکھ سکتے ہیں. ان میں سے سب فعل درست ہیں. اب کے لیے، اگرچہ ہم اس نقطہ نظر پر معیاری، سپر واضح کرنا ہوں گے کہ کردار پوائنٹر کہہ حروف * کی طرح ہے. یہ ڈیٹا کی قسم ہے. اور پھر متغیر کے نام کے اس معاملے میں ہے. تو ہم نے ایک تار ہو گیا ہے اور ہم نے یہ کہا جاتا ہے. اور پھر یہاں نیچے نوٹس ہے کہ اصل میں میں کیا کر trickery تھوڑا سا رہا ہوں. یہ پوائنٹر ریاضی، جو سپر سادہ طرح کی ہے کہا جاتا ہے. یہ صرف کا مطلب ہے اور اشارہ subtract شامل کی تعداد. لیکن یہ اصل میں کام کرتا ہے. بظاہر یہ پروگرام کے تار اس طرح نتیجہ ہے کہ فی سطر 1 کردار پرنٹ - تو ہم خراب جہاں یہ جا رہا ہے، اشارہ بنانے، اشارہ چلانے کر سکتے ہیں، مجھے اندر زوم اب کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے خوش اور قسم درج کریں جیسے کچھ میں قسم دو اور یہ فی سطر 1 کردار پرنٹ. تک پہلے دوسری، ہم مربع بریکٹ سنکیتن کے ساتھ اس نے کیا کیا کریں گے. ہم لوپ کے لئے ہے اور ہم کے کے printf کرنا ہوتا [i] اور ہم اس بار بار بار کر سکتے ہیں ہر لائن کے آخر میں ایک الٹا سلیش (ن) کے ساتھ. لیکن اس پروگرام کے مختلف ہے. اس پروگرام کا استعمال کرتے ہوئے، لفظی ہے، ریاضی. تو یہاں کیا ہو رہا ہے؟ سب سے پہلے، اس سے پہلے یہ بھی لوپ executes کیا، صرف صاف ہو جائے، کے اصل ہے؟ S ہے؟ >> [طالب علم] پتہ ہے. >> پتہ. اس لفظ میں پہلا کردار اور اس کے ایڈریس ہیلو کی صورت میں ہے،، جو گھنٹہ ہے. تو کے اس مخصوص مثال میں ہے، ایچ ایڈریس. تو کیا یہ کرنا مطلب ہے +؟ ٹھیک ہے، میں اس میں لوپ 0 سے شروع ہوتی ہے. ہم نے بہت کہ کئی بار کیا ہے. میں سٹرنگ کی لمبائی تک جاؤ، بظاہر جا رہا ہے. تو اس لوپ کے پہلے iteration میں ظاہر 0 ہے. تو یہ اظہار کہہ کے میں + ہے - بلکہ، S +0- کہ ظاہر ہے صرف کی ہے. تو کیا * ہے کے یہاں ہے؟ اب ہم ایک تھوڑا سا مختلف انداز میں ستارہ کا استعمال کر رہے ہیں. آپ کے وزٹرز کا ریکارڈ رکھا آگے بڑھیں اور ٹی سے چھٹکارا کیونکہ ہم ٹی کے کی کاپیاں کے بارے میں بات کر کیا رہے ہیں. اب ہم صرف کے شامل کہانی بتانے کے لئے کرنا چاہتے ہیں. اور تو اس وقت قسم سٹرنگ کے بعد، ہماری دنیا لگتا ہے بہت طرح اس نے اس سے پہلے کے ایچ ایڈریس ذخیرہ کرنے اور عام طور پر سٹرنگ میں کی طرف اشارہ کرتے ہوئے خوش ہیں. اگر اب میں * کی طرح ایک لائن کرتے ہیں (زبانیں + میں)، یہ کرنے کی کوشش کرنے دو تو (زبانیں میں + *). مجھے کیونکہ یہ 0 آسان بنانے، لہذا یہ * (+0 زبانیں) ہے. ٹھیک ہے، ایک منٹ رکو. مزید آسان بنائیں. یہ * (زبانیں) ہے. ٹھیک ہے، اب قوسین پاگل کی طرح ہیں، تو اب ہم صرف کرتے ہیں * کے. تو، اس لوپ، وہ لائن پر روشنی ڈالی ہے، 26 کی پہلی iteration میں بہت اس پرنٹنگ کے برابر ہے. کے * اعداد و شمار کی قسم کیا ہے؟ وجہ سے اس تناظر میں، ستارہ S خود کے ساتھ ہوتا ہے، لیکن خاص طور پر، کیونکہ ہم نہیں رہ کے اعلان کر رہے ہیں، ہم ایک متغیر پیدا نہیں کر رہے ہیں اب، 26 سطر میں چار * کا کوئی ذکر نہیں ہے، مطلوبہ الفاظ کی سٹرنگ کا کوئی ذکر نہیں ہے، ہم صرف کے نام کے متغیر کا استعمال کرتے ہوئے کر رہے ہیں، یہ پتہ چلا ہے اب سٹار تھوڑا سا مختلف ہے، اور اس کا اقرار بھی معنی بردوست ہے. * یہاں کے کا مطلب ہے کہ جو کچھ بھی وہاں ہے کے میں ایڈریس اور پرنٹ. کی * تو اس کے یہاں ہے، ہے - قسم کے Chutes سیڑھی کی طرح، تیر کی پیروی کرتے ہیں - یہاں. تو یہ * کی ہے. تو اوپر 26 میں لوپ کی پہلی iteration پر کیا چھپا ہو جاتا ہے؟ میں٪ C، جس میں ایک کردار کے لئے پلیس ہولڈر ہے پرنٹ، پھر ایک نئی سطر کے لئے کریں \ n. * (زبانیں میں +) جہاں میں 0 بس یہ ہے. تو کیا چار میں٪ C کے لئے میں کیا جگہ ہے؟ H. آپ شاید دیکھ سکتے ہیں جہاں یہ جا رہا ہے - لوپ کے اگلے iteration میں - تاکہ اگلے iteration میں ظاہر ہے 1 ہے، اس کا مطلب یہ ہے +1 s کو، اور اس کے بعد اب میں قوسین کی ضرورت ہے کیونکہ اب سٹار کو کہنے کی ضرورت ہے؟ میموری ایڈریس +1 s کو جانا. کے کیا ہے؟ میں وقت میں واپس رول اور کا کہنا ہے کہ یہ تیر اب ہمیں اصل میں نہیں ہے کوئی اپکار کر رہے ہوں. ہے خاص طور سے دو کا کہنا ہے کہ یہ تعداد 123 ذخیرہ کرنے کیونکہ میں اس جملے کے آغاز ہیلو، یہ 123 کا پتہ ہے، یہ 124 ہے، اور وغیرہ. تو دوسری iteration جب میں +1 s کو کہہ رہا ہوں، یہ 123 +1 کہہ رہے کی طرح ہے، تو دوسری صورت میں 124 کے طور پر کہا جاتا ہے، جو چار دوسرے iteration پر چھپا ہو جاتا ہے؟ میموری 124 پتے پر ای. پھر +، 125، 126، 127، اور اس لوپ شکر رک جاتا ہے اس سے پہلے کہ ہم یہاں ملتا ہے کیونکہ میں strlen کا استعمال کرتے ہوئے اس بات کا یقین کر لیں کہ میں بہت زیادہ شمار نہیں کرتا رہا ہوں. تو یہ بھی ہے. ایک بار پھر، یہ ہے جیسے ہم ایک ہفتے پہلے کیا تھا. مجھے اس کے نیچے لائن پر لکھنے اگرچہ ہم دونوں نہیں کرنا چاہتا. اس جیسی ہے. تو اگرچہ کی ایک تار ہے، جیسا کہ ہم گیا ہے ہفتوں کے لئے بلا کی واقعی میں ایک چار * ہے. تو اگر ہم سپر مقعد کرنا چاہتے ہیں، مخصوص کردار کو لکھنے پر بہت مناسب ہے ith ان عددی پتے اور اس کے اسٹار آپریٹر کا استعمال کرتے ہوئے جگہ پر، لیکن سچ کہوں تو، یہ اتنا کلینر ہے. تو یہ برا نہیں ہے. کوئی وجہ سے 27 لائن یہاں کیا کر رہے ہو، روکو لیکن 26 فعل ایک ہی ہے، اور یہ فعل بالکل وجوہات کی بناء پر ہے کہ ہم کیا گیا ہے، اس طرح اب تک بات چیت کے لئے ایک ہی ہے. اور آخر میں، 29 صرف اچھے عمل ہے. کے مفت کال کر رہا ہے کا مطلب یہ ہے کہ اب تم واپس دے میموری ہے کہ GetString نے تمہیں دیا تھا رہے ہو کیونکہ پھر پیر کے طور پر میں نے ذکر کیا، ہفتوں کے لئے GetString آپ کے کوڈ میں ایک مسئلے شروع کیا گیا ہے. ہفتوں کے لئے آپ کا کوڈ میموری لیک دیکھا گیا ہے آپ کو جس ہے میموری کے لئے GetString پوچھ رہا لیکن آپ نے اسے کیا گیا ہے کبھی واپس نہیں دے. اور جو جان بوجھ کر ہماری طرف سے منتخب کیا گیا تھا pedagogically کیونکہ یہ صرف جلد کے بارے میں سوچنے کے لئے بہت زیادہ ہے. لیکن اب ہم مزید توازن کی ضرورت ہے. اگر آپ میموری کے لئے کمپیوٹر سے دعا گو ہیں، کے طور پر GetString کے لئے معاملہ ہے، کے طور پر معاملہ malloc کے لئے بظاہر ہے، اب آپ لازما 4 pset کے آگے کے لئے بھی مفت کسی بھی ایسی میموری. نوٹس یہ int N کہنے سے مختلف ہے. آپ اس آزاد کرنے کی ضرورت نہیں کیونکہ آپ GetString فون نہیں کیا اور آپ malloc فون نہیں کیا. اور یہاں تک کہ اگر تم نے فون کیا GetInt جیسا کہ ہم آخر میں نظر آئے گا، GetInt آپ کے لئے میموری مختص نہیں ہے کیونکہ آپ کے ارد گرد اصل integers منتقل کر سکتی ہیں اور floats اور حروف صرف راستہ ہم نے ہفتے کے لئے کر رہا ہے. ڈور، اگرچہ، خاص ہیں کیونکہ واقعی وہ ایک سے زیادہ حروف کے concatenation ہیں. تو وہ صرف حروف اور floats اور ints سے مختلف ہیں اور پسند کرتے ہیں. لیکن ہم اس سے پہلے کہ طویل واپس آ جائیں گے. اشارہ کے اس آغاز پر کوئی سوال؟ جی ہاں. [اشراوی طالب علم سوال] آہ، بہت اچھا سوال ہے. کچھ چیزیں C اصل میں آپ کے لئے کرتا ہے میں سے ایک، جو آسان ہے، ہے یہ آپ کے لئے باہر کے اعدادوشمار سائز ڈیٹا کے قسم کی ہے اور پھر آپ کے لئے اس طرح کی ضرب ہے. یہ حروف کی صورت میں غیر متعلقہ ہے کیونکہ تقریبا ہمیشہ ایک چار 1 بائٹ ہے، تو یہ صرف کام کرتا ہے. لیکن بحث کی خاطر کے لئے، اگر آپ واقعی integers چھپائی کر رہے تھے اور آپ کو کچھ کی قیمت جو ایک عددی کی طرف اشارہ کر رہا تھا پرنٹ کی کوشش کر رہے تھے، آپ اسی طرح 4 + کرنے کی ضرورت نہیں * میں صرف اس وجہ سے ایک int 4 بائٹس ہے. پوائنٹر ریاضی کا مطلب یہ ہے کہ سی اور سنکلک ہے کہ آپ کے لئے ریاضی کرتے ہیں. آپ کے بارے میں دیکھ بھال کی ہے انسانی احساس کی طرح میں گنتی ہے. جی ہاں. [طالب علم] اگر آپ کو لوپ کے لئے ایک کے اندر ایک تار کا اعلان کرتے ہیں، تو آپ اسے بعد میں آزاد ہے؟ اچھا سوال ہے. اگر آپ ایک لوپ کے لئے سٹرنگ اندر کا اعلان کر دیا ہے، تو آپ اسے بعد میں آزاد کرنے کی ضرورت ہے؟ تم صرف مفت میموری کی ضرورت ہے کہ آپ GetString کے ساتھ یا malloc کے ساتھ مختص ہے. تو اگر آپ کا کہنا ہے کہ کچھ پسند - مجھے گھوبگھرالی منحنی خطوط وحدانی تاکہ تمام کوڈ سے متعلق ہے. اگر آپ buggily اگرچہ اس طرح کچھ، کیا، چار * T کی = آپ کو مفت ٹی کی ضرورت نہیں ہے کیونکہ ٹی malloc یا GetString کا کوئی ذکر شامل نہیں کیا ہے. اگر اس کے برعکس کی طرف سے آپ کو یہ کیا، GetString، تو جی ہاں، آپ کو مفت ٹی کی ضرورت ہو گی. اور حقیقت میں، آپ صرف ایسا کرنے کا موقع اب اس لوپ کے اندر گنجائش کے اسی مسئلہ کے لئے ہے، ہے کہ ہم نے ماضی میں بھی بات چیت کی ہے. ورنہ تم میموری رکھا جائے آونٹن تھا، میموری آونٹن، میموری آونٹن اور پروگرام کے اختتام پر کیونکہ آپ کہ لوپ سے باہر ہیں، T موجود نہیں ہے لیکن آپ کے آپریٹنگ سسٹم کے کبھی نہیں کہا ہے کہ آپ اس میموری کی ضرورت نہیں تھی اب. اور 4 یا 5 pset کے لئے، ہم نامی Valgrind پروگرام کے ساتھ بہت پہلے آپ سسججت گے، جو روح میں GDB کی طرح ہے کہ میں اس arcane انٹرفیس کی کسی حد تک مل گیا ہے، لیکن زندگی میں آپ کی مدد کرنے کے لئے اس کا مقصد ہے. اور Valgrind ایک پروگرام ہے کہ آپ کے پروگرام مستقبل میں تلاش کی تلاش میں میموری لیک، چاہے GetString یا malloc سے جو ہم سب کا استعمال کرتے ہوئے شروع کر دیں گے جیسا کہ ہم CS50 لائبریری کا استعمال کرتے ہوئے زیادہ سے زیادہ کو روکنے کے. آخر ہم اب الفاظ کی طرح کی تھیوری اور اس میں ذہنی ماڈل کی طرح جس کے ساتھ اس ٹوٹی پروگرام کو حل کرنے کے. تو اس ٹوٹے ہوئے پروگرام میں، سویپ سویپ کے اندر کام کرتا ہے، لیکن یہ اہم اصل میں کبھی نہیں کام کیا ہے کیونکہ مرکزی X اور Y، یاد میں منظور، اور ان اقدار کی طرف سے میں منظور کیا گیا تھا، تو بات کرنے کی. ان کی نقول پر تبادلہ دیا گیا. سویپ کے آخر تک، a اور b یقینا کیا گیا تھا تبادلہ، لیکن کورس کے X اور Y، جیسا کہ ہم پیر کو بات چیت کی، نہیں کیا گیا تھا. تو میں سبز رنگ میں یہاں تجویز ہے کہ یہ اصل میں حل ہے. اور اصل میں، مجھے میرے ستارے مسلسل کے منتقل پھر، اگرچہ فعل اس سے کوئی فرق نہیں پڑتا ہے. مستقبل کے ہفتوں میں ہم نے اس بات کی وضاحت کب اور کیوں اس سے فرق پڑتا ہے بات کریں گے. تو سبز رنگ میں اب ایک حل ہے. اصل میں، یہ ایک پوری بہت messier لگتا ہے کیونکہ میں ان تمام ستاروں کی. مجھے ایک بات کی طرف اشارہ ہے. یہاں سب سے اوپر لائن جہاں اس کا کہنا ہے کہ int * ایک اور int B * ہے بنیادی طور پر ایک ہی بات کر رہے کیونکہ یہ ہمیشہ ہے. 2 دلائل یا پیرامیٹرز کا اعلان تبادلہ ہے، جن میں سے پہلے ایک int پوائنٹر ہے قرار دیا، جس میں سے دوسری نامی ایک int ب پوائنٹر ہے. صرف ایک ہی چیز ہے جو کہ اس وقت نئے ہے یہ حقیقت ہے کہ وہاں ایک ستارہ ہے. اس کا کیا مطلب ہے؟ ب ایک int نہیں ہے، ایک int نہیں ہے. ایک int کا پتہ ہے اور بی ایک مختلف int کے ایڈریس ہے. نیچے یہاں، یہ وہ جگہ ہے جہاں میں مانتا ہوں C مبہم ہو جاتا ہے. اب ہم ایک ستارہ کا استعمال کرتے ہوئے کر رہے ہیں، لیکن وہ اس سلسلے میں مختلف معنی ہے. کیونکہ ہم اشارہ اعلان نہیں کر رہے ہیں جیسا کہ ہم نے یہاں ہیں، یہاں ہم چیزوں محولہ لقب ضبطی کر رہے ہیں. تو تکنیکی طور پر، سویپ کے اندر پہلی، دوسری اور تیسری لائن کے اس تناظر میں ستارہ ہے dereference آپریٹر، جس کا مطلب صرف اتنا وہاں چلتے ہیں. تو میری انگلی H تیر کے بعد، * ایک ذريعہ ہو، اور اس ایڈریس پر جاؤ اور آپ کے وزٹرز کا ریکارڈ رکھا int ہے کہ. * بی کے ذرائع سے پتہ پر جاؤ اور میرے پاس وہاں کیا ہے. تو پیر اب کے فریموں کی ایک اسٹیک کے استعمال سے تصویر redraw جس کے سب سے نیچے ایک اہم جا رہا ہے، جس کے اوپری ایک سویپ کی جا رہی ہے، تاکہ ہماری دنیا میں صرف پیر کے روز کی طرح لگتا ہے، اس طرح،. میموری کا ایک حصہ ہے کہ اہم کرنے کے لئے استعمال کی جا رہی ہے ہے. پیر سے یاد سے قبل بتایا کہ آج کا یہ پروگرام صرف 2 متغیر تھی، x اور کہا جاتا Y کہا جاتا ہے، اور میں نے تعداد کو ڈال دیا 1 اور 2 کی تھی وہاں. اب جب میں طرح تبادلہ فون میں پیر کے روز کیا، جو پہلے جب میں نے اس پروگرام کے سرخ ورژن کا استعمال کیا ہے، اس طرح لگ رہا ہے، میں 2 پیرامیٹرز، بی اور ہے، اور جو ہم یہاں اور یہاں لکھا ہے؟ صرف 1 اور 2، لفظی X اور Y کے نقل کرتا ہے. آج ہم اس کو تبدیل. آج ints میں گزرنے والے کی بجائے ایک اور بی ہم 2 پتوں میں منظور کرنے جا رہے ہیں. وہ پتے ints کی طرف اشارہ ہو جائے، لیکن وہ پتے خود ints نہیں کر رہے ہیں. وہ پتے ہیں. یہ بجائے ایک ای میل ایڈریس کی طرح ہے. تو اب ہم صرف اپنے آپ کو سکرین پر تھوڑا اور تفصیل دینے کی ضرورت ہے. یہ اپنے کمپیوٹر کی میموری ہے کیونکہ یہ تمام دن تھا. اب ہم کچھ صوابدیدی نمبر کی منصوبہ بندی کی ضرورت ہے. تو صرف موقع کی طرف سے صرف یہ کہنا، کہ یہ میموری 123 پتہ، 124 ہے. چلو کا کہنا ہے کہ یہ 125 ہے، 126 ہے، اور وغیرہ، لیکن ہے کہ مکمل طور پر غیر منطقی ہے. ہم صرف میری یاد میں کچھ تعداد کی منصوبہ بندی کی ضرورت ہے. تو اب جب میں دراصل X اور Y کے گزر، میں جا رہا ہوں X اور Y کے پاس نہیں کر رہا ہوں؛ میں ای میل ایڈریس میں X اور Y کے پاس، اس سے بات کرنے، جا رہا ہوں تاکہ جو ہو جاتا ہے یہاں اور یہاں ذخیرہ 1 اور 2 نہیں ہے، لیکن اگر تم میرے چھوٹے لفظی دیکھ سکتے ہیں، یہاں اور یہاں میں کیا منظور ہو جاتا ہے؟ [اشراوی طالب علم کے جواب] بالکل. >> 123 یہاں ڈال دیا جاتا ہے اور 124 یہاں ڈال دیا ہو جاتا ہے. اب، میں کیونکہ یہ بہت ہی پہلی سطر یہاں راہ میں سب سے اوپر سٹار کیا کرتے تھے، میرا پروگرام صرف 123 کہ 124 جانتا ہے، اگرچہ وہ ظاہر integers ہیں کسی بھی انسان کہ محسوس کر سکتا ہے، وہ پتے، عددی پتے کے طور پر تشریح کرنا چاہئے. انہوں نے اور خود ints نہیں ہیں، وہ پتے ہیں، اور وہ اس لئے ہے کیونکہ میں واضح طور پر وہاں کے ستاروں پر ڈال دیا. تو اب اپنے اصل کوڈ یہاں کس کا ہوتا ہے پہلی، دوسری اور تیسری لائن میں؟ تصویر کے باقی اپنی طرف متوجہ. Tmp پیر تھا کی طرح ہے. tmp کے بارے میں کچھ خاص نہیں ہے. یہ صرف ایک مقامی 32 بٹیں متغیر ہے، اور اندر میں بظاہر ایک * کی قدر ذخیرہ کرنے ہوں. اب، اگر میں نے صرف اتنا کہا tmp = ایک، جو میں یہاں ڈال دیں گے؟ >> [طالب علم] 123. 123. لیکن یہ نہیں ہے کہ میں کیا کر رہا ہوں. میں کہہ رہا ہوں tmp = * ایک. سٹار کا مطلب وہاں جاؤ. تو یہاں ایک ہے، 123. میں وہاں کیسے جا سکتا ہوں؟ ڈرامہ کی طرح ایک تیر ہے. ٹھیک ہے، یہ ہے، 1. تو tmp میں کیا محفوظ ہو جاتا ہے، بظاہر؟ صرف 1. تو دوسرے الفاظ میں، tmp * ایک * ایک کا مطلب ہے پتہ ہے کہ اس وقت میں ہے، جو بظاہر 123 ہے. ٹھیک ہے، ہم یہاں پر 123 مقام پر ہیں، میں نمبر 1، تو میں نمبر 1 کے لئے پیش کیا جا رہا ہوں. اب میں لائن 2 میں کیا کرتے ہیں، * ایک = * B؟ یہ ایک تھوڑا شامل کر دیا گیا ہے کیونکہ اب کیا ہے؟ یہ 123 ہے. تو * کہاں ہے؟ اس وقت جہاں میں پہلے تھا. تو وہاں جانا ہے. ٹھیک ہے. اب آخر میں، اور پھر آخر میں اس کا کوئی مطلب شروع، امید گا، * ب کا مطلب ہے کہ ب میں کیا ہے؟ 124. اس لیے میں وہاں جانے کے لئے کی ضرورت ہے، جو 2 ہے. تو میں کیا ڈال ہے کہاں؟ 2 یہاں میں چلا جاتا ہے کیونکہ * ب * کا میں چلا جاتا ہے. لہذا میں یہ کر دونگا. اور تم پہلے ہی شاید دیکھ، کہ ہم اتنا قریب ہو کر سکتے ہیں یہ مورھ، سادہ مسئلہ پہلی بار کے لئے صحیح طریقے سے حل کرنے کے لئے کیونکہ اب ہم X تھا اب بھی یاد ہے، ہم نے 2 نقول ہیں، اس کا اقرار Y،، لیکن 3 لائن اب * ب کا کہنا ہے کہ. تو یہاں ب ہے. * ب کا مطلب وہاں جاؤ. تو جہاں جگہ ہے 124؟ یہ بظاہر یہاں ہے. تو کیا میں یہاں ڈال دیا ہے؟ ظاہر ہے، tmp. تو اب میں یہ کرتے ہیں. لہذا میں 1 یہاں اور 2 یہاں ہے. اور اب اس کے تمام، 123، 124، اور 1 کے بارے میں؟ جیسے ہی سویپ کی واپسی کے طور پر، اس کی یاد کے طور پر اچھا ہے کے طور پر کھو ہے کیونکہ جلد ہی سویپ کی واپسی، آپریٹنگ سسٹم کے طور پر کہ میموری مستقبل میں دوبارہ استعمال کریں مفت ہے. صرف اس نام نہاد اسٹیک کے سب سے نیچے دیئے گئے اہم میموری کے گرد چپک. اور اس طرح ہم آخر میں اب ایک کام کر ورژن ہے. کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے swap.c میں جانا، اور مندرجہ ذیل نوٹس. پروگرام کے سب سے اوپر دیئے گئے میں اپنے پروٹوٹائپ کو تبدیل کر دیا ہے int * ایک اور int * ب. تو صرف ایک چیز میں سے سبز، سرخ، جو برا تھا جو اچھا ہے پر تبدیل کر دیا گیا ہے، ہے آج میں ان ستاروں کو شامل ہے. لیکن پھر یہاں ذیل میں خود میں کاپی پڑا تبادلہ، پیسٹ صرف سلائڈ پر کیا تھا. یہاں اسٹار میں یہاں ایک ستارہ ہے - کہ پروٹوٹائپ سے میل کھاتا ہے - اور اس کے بعد اب ان تمام چیزوں کے tmp کے علاوہ ستارے ہیں کیونکہ ایک عارضی متغیر کے استعمال، وہاں کوئی نئی بات نہیں ہے. میں صرف ایک int کے لئے عارضی اسٹوریج کی ضرورت ہے. تو ہم ایک ستارہ کی ضرورت نہیں ہے. ہم صرف اسٹار کی ضرورت ہے تاکہ ہم صوابدیدی حد کے اس طرح سے تجاوز کر سکتے ہیں اپنے کمپیوٹر کی میموری میں ان 2 فریم کے درمیان. لیکن ایک آخری چیز کو تبدیل کرنے کی ہے، اور آپ اسے پہلے ہی جھلک ہو سکتا ہے. کیا دوسری لائن اب واضح طور پر مختلف ہے؟ >> [طالب علم] & X. جی ہاں، اس لئے 25 کوڈ کی آخری سطر میں اس کے لئے کام کرنے کے لئے تبدیل کرنے کی ضرورت ہے ہے. پہلے ایک ہفتہ اور پیر کو بھی 25 اوپر اس طرح دیکھا، X اور Y کو تبادلہ، اور یہ تو صرف ٹوٹ کیونکہ اگر تم کہو تو سویپ (X Y،) آپ X اور Y کی کاپیاں تبادلہ دے رہے ہیں، تو یہ اس کی بات کر رہی ہے، لیکن آپ X اور Y خود اصل میں کبھی نہیں تبدیل کر رہے ہیں. تو بھی اگر آپ کو اس کردار کبھی نہیں دیکھا ہے کوڈ میں ایمپرسینڈ کے ساتھ پہلے، صرف ایک اندازہ. کیا ایمپرسینڈ، بظاہر کیا کرتا ہے؟ [طالب علم] پتہ ہوتا ہے. >> ایڈریس لیتا ہے. تو ایمپرسینڈ کہہ رہا ہے کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے ایکس کے ایڈریس دینا ہے. وہ کہاں ہے کون جانتا ہے؟ یہ 123 پر ہوتا ہے. مجھے کوئی پرواہ نہیں. بس کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے ایکس کے ایڈریس دے. اور Y کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے Y کے ایڈریس دے کا مطلب ہے. اور ہم ایک لمحے پہلے اس نقطہ کی کہانی تصویر کے ساتھ بالکل مطابق ہے متوجہ کیا. لہذا میں نے اشارہ تسلیم، میرے لئے یقینی طور پر جب میں نے پہلی بار یہ سیکھنے شروع کر دیا کریں گے، یقینی طور پر سب سے مشکل میرے ذہن کو چاروں طرف سے لپیٹ چیزوں میں سے ایک تھے. احساس لیکن، خاص طور پر کے طور پر ہم اس طرح کی چیزوں کی ان کے ساتھ کھیلتے رہنا، اگر آپ اس کے ان سپر آسان ترتیب دیں ٹوٹ ذہنی مسائل uninteresting صرف تعداد منتقل کے ارد گرد، اشارہ کے ساتھ جواب برم کی ایک بہت واقعی میں یہ بہت بنیادی میکینکس سے حاصل کر سکتے ہیں. یہ ایک پتہ ہے. ستارہ کے ساتھ وہاں جاؤ. یا اس کے برعکس، یہاں ایک ایمپرسینڈ ہے. اعداد و شمار اصل میں کیا پتہ ہے. ٹھیک ہے. تو جہاں اس میموری کا سب سے آ رہا ہے؟ ہم نے اس تصویر کو تیار کے ایک جوڑے بار ہے، اور میں وعدہ رہو ہم اس سے واپس آ جائیں گے، لیکن یہاں آپ کے کمپیوٹر کی میموری کی نمائندگی کرتا ہے جو تھوڑا ہمارے چاکبورڈ سے زیادہ لیبل لگا یہاں ہے. سب سے اوپر متن کے ٹکڑے آپ کے پروگرام کے حوالے سے کیا کی نمائندگی کرتا ہے؟ [اشراوی طالب علم کے جواب] معذرت >>؟ پھر سے کہو. [طالب علم] اصل پروگرام. >> اصل پروگرام. 0s اور 1s کہ آپ C کوڈ لکھنے کے بعد مرتب کیا گیا ہے اور اس کے بعد چلانے بجنا تو اور 1s اور 0s ختم اپ پیدا یاد میں tucked ہو رہی ہے جب آپ اپنے میک یا پی سی پر ڈبل ایک آئکن پر کلک کریں کیونکہ یا آپ فوری طور پر ماریو کی طرح ایک کمانڈ چلائیں، اور آپ کی ڈسک سے 0s اور 1s میموری میں بھری ہوئی تاکہ کمپیوٹر ان جوڑتوڑ کر سکتے ہیں اور انہیں زیادہ تیزی سے پھانسی. تو initialized ڈیٹا اور غیر ابتدا شدہ ڈیٹا، ہم ان کے بارے میں زیادہ بات نہیں کریں گے، لیکن وہ صرف عالمی متغیر ہیں. Initialized عالمی متغیر کہ آپ اقدار دی کا مطلب ہے؛ غیر ابتدا شدہ عالمی متغیر کہ آپ اقدار ابھی تک نہیں دے کا مطلب ہے. پھر ان ماحول متغیر جو میں نے میرے ہاتھ کو مکمل طور پر لہر گے، لیکن وہ وہاں ہیں اور یہ کہ آپ کے صارف کے نام کی طرح اسٹورز چیزیں اور نچلے درجے تفصیلات کے دیگر طرح. لیکن آپ کی میموری کی ترتیب کے juiciest ٹکڑے ٹکڑے بلایا اسٹیک اور ڈھیر بات یہ ہے. پھر اسٹیک، واضح، میموری ہے کہ جب بھی کام کرتا ہے کہا جاتا ہے استعمال کیا جاتا ہے ہے، وہاں مقامی متغیر جب بھی ہیں اور جب بھی پیرامیٹرز کیا جا رہا ہے کے ارد گرد گزر. یہ ہے کہ تمام اسٹیک میں ہوتا ہے. ڈھیر کے بارے میں ہم سے بات نہیں کی ہے، لیکن ایک اندازہ ہے جو ڈھیر کا استعمال کرتا ہے. بس میموری کا ایک مختلف حصہ. یہ سب سے اوپر یہاں پر تیار ہوتا ہے، لیکن ہے کہ ایک صوابدیدی سچتر کنونشن ہے. کون بظاہر ڈھیر سے ہفتوں کے لئے میموری کا استعمال کر رہے ہیں؟ یہ تکنیکی طور پر تم بالواسطہ طور پر ہے. >> [طالب علم] GetString. GetString اور malloc. تو بنیادی فرق ہے. آپ نے گزشتہ چند ہفتوں کے لئے جانتے ہیں کہ اگر آپ کو میموری کی ضرورت ہے، صرف ایک متغیر کا اعلان. اگر آپ میموری بہت کی ضرورت ہے، آپ کے تقریب کے اندر صف کا اعلان کریں. لیکن ہم مسئلہ کا سامنا رکھ دیا ہے ہے اگر تم متغیر کے افعال میں سے مقامی طور پر اندر کا اعلان، جیسے ہی تقریب کی واپسی کے طور پر، میموری اور ان متغیرات میں کیا ہوتا ہے؟ بس اس کی طرح اب تمہارا نہیں ہے، ٹھیک ہے؟ یہ صرف conceptually کی طرح غائب ہے. یہ اب بھی جسمانی طور پر وہاں ہے، ظاہر ہے، لیکن یہ اب استعمال کرنے کے لئے آپ کا حق ہے. ظاہر ہے، یہ مسئلہ ہے اگر آپ زندگی میں کام لکھنا چاہتے ہیں جو کہ اصل میں میموری مختص کرتے ہیں اور اسے نہیں دے فورا واپس. پوائنٹ میں کیس: زندگی میں GetString کا مقصد پہلے سے کوئی اندازہ نہیں ہے ہے کہ کس طرح ایک تار میں کی بورڈ میں ٹائپ کرنے کے لئے جا رہا ہوں بڑے لیکن یہ میموری داؤد یا خوش منعقد کرنے پر مختص کرنے کے قابل ہونا چاہئے یا ایک مکمل مضمون ہے کہ صارف اندر ٹائپ کر سکتے ہیں تو GetString گیا ہے malloc کا استعمال کرتے ہوئے. Malloc لہذا اسٹیک نہیں رکھا جائے کا استعمال کرتے ہوئے کرنا ضروری ہے؛ بجائے اس ملاقات کی ڈھیر بات کا استعمال کرتے ہوئے کر رہا ہے. میموری کے بارے میں مختلف نہیں ہے. یہ تیز نہیں یا سست یا ایسا کچھ ہے. یہ ایک مختلف مقام میں صرف جسمانی طور پر ہے. لیکن اصول یہ ہے کہ میموری ڈھیر پر مختص ہے تم سے دور رکھا جائے گا کبھی نہیں لیا جب تک کہ آپ کہتے ہیں - ایک اندازہ لے - مفت. کے برعکس، کوئی بھی میموری آپ کو صرف ایک صف اعلان سے اسٹیک پر طلب یا ایک متغیر قرار دیا جیسا کہ ہم نے ہفتے کے لئے کر رہی کہ پہلے سے طے شدہ کی طرف سے اسٹیک پر ختم ہوتا ہے. اور اس وقت کے عظیم 90 فیصد کام کرتا ہے، لیکن ان rarer مواقع پر آپ میموری مختص کرنے اور اس کے ارد گرد رکھنے جہاں چاہتے ہیں، تو پھر آپ کی طرح ایک تقریب malloc استعمال کرنے کی ضرورت ہے. یا ہم جیسے GetString، جس کے نتیجے میں malloc کا استعمال کرتا ہے ایک تقریب کا استعمال کیا ہے. چلو دیکھتے ہیں جہاں یہ ٹوٹ اور پھر Binky میں جھانکنا لے سکتا ہے. ہم مستقبل میں اس پر واپس آ جائیں گے. یہ ایک انتہائی سادہ پروگرام ہے کہ پہلے 2 لائنوں میں کیا کرتا ہے؟ انگریزی میں ان کی پہلی کوڈ 2 لائنوں اندر کرتے ہیں کے اہم؟ [اشراوی طالب علم کے جواب] ہوشیار. یہ آپ کے وزٹرز کا ریکارڈ نہیں دے X یا Y کی ایڈریس ہے. [طالب علم] ints اشارہ دیتا ہے. >> اچھا لگا. آپ کے وزٹرز کا ریکارڈ رکھا integers 2 اشارہ دے. دوسرے الفاظ میں، کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے میموری 2 حصوں کہ میں آج ڈرائنگ رہو دے، اگرچہ میں اب یہ چوکوں کے طور پر ختم،. کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے میموری 2 حصوں کرو، ایک ایکس فون کیا، ایک Y ملاقات کی - پہلے میں نے انہیں اور ٹی کہتے ہیں - اور میموری کے اس حصہ کی قسم کیا ہے؟ یہ پتہ ذخیرہ کرنے جا رہا ہے. یہ قسم int * ہے. X میں تو ایک int کا پتہ آخر میں زندہ رہے گا، بالآخر ایک int کا پتہ Y زندہ رہے گا، لیکن ابتدائی طور پر، X اور Y کے اندر کیا ہے؟ کون جانتا ہے؟ ردی کی ٹوکری میں اقدار. یہ اشارہ کے ساتھ کوئی تعلق نہیں ہے. اگر ہم وہاں کچھ ہے، جو جانتا ہے کہ کیا واقعی وہاں نہیں لگا ہے؟ اب، X. یہاں کیا ہوتا ہے؟ یہ legit ہے کیونکہ X پوائنٹر ہے. یہ ایک int * ہے. تو اس کا مطلب ہے کہ میں ایکس میں میموری کا کچھ حصہ کا پتہ لگا سکتے ہیں. malloc کیا واپس کرتا ہے؟ کامل ہے، اس پتے واپس، میموری کا ایک مکمل حصہ میں پہلی بائٹ کا پتہ ہے. یہ کتنے بائٹس بظاہر مثال کے طور پر آونٹن، آلات،؟ ایک int کا سائز کیا ہے؟ 4. اگر آپ واپس 1 ہفتہ لگتا ہے، یہ انتہائی نہیں ہے اہم ہمیشہ یہ یاد، لیکن یہ اس صورت میں مفید ہے، 4 بائٹس جاننا ہے. تو یہ ڈھیر 4 بائٹس پر آونٹن ہے اور اس نے مجھ سے پہلے ایک کا پتہ واپس آنے منمانے ہے. اب، کیا X کر رہا ہے؟ A * X = 42 کیا کر رہا ہے؟ اگر کہانی میں اس وقت ہم X، جو کچھ ردی کی ٹوکری کی قیمت کے ساتھ اس طرح لگ رہا ہے ہے، اب یہ کچھ ردی کی ٹوکری کی قیمت کے ساتھ Y، اب لائن 3 میں نے 4 بائٹس مختص ہے. یہ تصویر بنیادی طور پر اس طرح لگ رہا ہے. یا اس سے زیادہ خاص طور پر، اگر یہ صوابدیدی 123 کا پتہ ہے، یہ ہے کہ ہماری کہانی کی طرح لگتا ہے. * X = 42 اب کیا مطلب ہے؟ اس کا مطلب یہ ہے کہ ایڈریس 123 اور ان کی تعداد وہاں 42 ڈال. میں ان لائنوں کو اپنی طرف متوجہ کرنے کی ضرورت نہیں ہے کیونکہ ہم ڈور نہیں کر رہے ہیں. میں صرف اس طرح لکھا ہے، اور صرف مظاہرہ خاطر کے لئے، ایک int قسم کی کے طور پر 42 علاقے کا ایک بہت لیتا ہے، 4 بائٹس. جس سے کہ وہاں کیا ہوا ہے، لیکن اب وہاں ایک مسئلہ ہے. * Y = 13. یہاں ہونے جا رہا ہے؟ مسئلہ ہمارے سادہ دنیا میں * Y ہے صرف کا مطلب ہے کہ Y میں ایڈریس. Y میں کیا ہے؟ یہ کچھ ردی کی ٹوکری کی قیمت ہے. تو فرض کریں کہ وہ ردی کی ٹوکری کی قدر 5551212 ہے، کچھ اس طرح پاگل ہے. * Y ذرائع 5551212 کو حل کرنے جاتے ہیں. یہ یہاں پسند ہے. یہ موجود ہیں، مثال کے طور پر نہیں ہے. تو * Y 13 کا مطلب ہے کہ میں 13 یہاں اپنی طرف متوجہ کرنے کی کوشش کر رہا ہوں ملتی ہے. یہ موجود ہی نہیں ہے. میں نے بلیکبورڈ کے طبقہ سے تجاوز کیا ہے. مجھے کیا ملتا ہے؟ اس خفیہ پیغام انقطاع کی غلطی کی وجہ سے میں یاد میں ڈال کرنے کی کوشش کر رہا ہوں ایک ایسی جگہ ہے جو موجود نہیں ہے میں 13 کی طرح ایک قدر ہے. باقی پروگرام کا اس نقطہ یہ نہیں کرتا جب تک ٹھیک ہے، لیکن کام ہو سکتا ہے. تو اس کہانی بتانے کے لئے کی کوشش. ہم نے کہ ایک بار ہم hex کے بارے میں بات کی ہے میں واپس آ جائیں گے. ، چلو اس کے پیچھے جاہیں اور Binky بلایا چیز کے ساتھ یہ نتیجہ اخذ جو یاد سٹینفورڈ گھر میں بیٹھ کر claymation کے ساتھ کھیلنے کے پروفیسر ہیں، بالکل وہی ایک ہی پروگرام کی کہانی بتانے کے لئے. یہ صرف 3 کے بارے میں طویل منٹ ہے. یہاں ہم Binky ہے. [ویڈیو پر لڑکا اسپیکر] ارے Binky، جاگ جاؤ. یہ پوائنٹر تفریح ​​کے لئے وقت ہو گیا ہے. [Binky] یہ کیا ہے؟ اشارہ کے بارے میں معلومات حاصل کریں؟ اوہ، واہ! [لڑکا اسپیکر] ٹھیک ہے، شروع کرنے کے لئے، مجھے لگتا ہے کہ ہم ایک جوڑے اشارہ کی ضرورت کے لئے جا رہے ہیں. [Binky] ٹھیک ہے. اس کوڈ کو 2 اشارہ integers جس کی طرف اشارہ کر سکتے ہیں مختص ہے. [لڑکا اسپیکر] ٹھیک ہے. ٹھیک ہے، میں 2 اشارہ دیکھتے ہیں، لیکن وہ کچھ کی طرف اشارہ کرتے ہوئے لگتا نہیں ہے. [Binky] یہ ٹھیک ہے. ابتدائی طور پر، اشارہ، کچھ نہیں کی طرف اشارہ کرتے ہیں. چیزیں وہ کی طرف اشارہ pointees کہا جاتا ہے، اور ان کی ترتیب ایک الگ قدم ہے. [لڑکا اسپیکر] اوہ، ٹھیک ہے، ٹھیک ہے. مجھے پتہ تھا. pointees علیحدہ ہیں. یر، تو آپ کو ایک pointee کس طرح مختص ہے؟ [Binky] ٹھیک ہے. یہ کوڈ ایک نئے عددی pointee مختص ہے، اور یہ حصہ ایکس اس کی طرف اشارہ کرنے کے متعین کرتا ہے. [لڑکا اسپیکر] ارے، یہ بہتر لگتا ہے. تو اسے کچھ کرنا. >> [Binky] ٹھیک ہے. میں پوائنٹر X dereference اس pointee میں 42 نمبر جمع کریں گے. یہ چال کے لئے میں میری محولہ لقب ضبطی کے جادو کی چھڑی کی ضرورت ہو گی. [لڑکا اسپیکر] آپ کی محولہ لقب ضبطی کے جادو کی چھڑی ہے؟ یہ بہت اچھا ہے. [Binky] یہ وہی ہے جو کوڈ کی طرح لگتا ہے. میں نے صرف تعداد مقرر کریں گے ... [آواز پوپ آؤٹ ہیں] [لڑکا اسپیکر] ارے، دیکھو، وہاں جاتا ہے. تو X پر dereference کر تیر اس pointee تک رسائی حاصل کرنے کے مندرجہ ذیل، وہاں میں اس معاملے میں 42 سٹور. ہے، اس کا استعمال کرتے ہوئے دوسرے پوائنٹر، Y کے ذریعے 13 نمبر جمع کرنے کی کوشش کریں. [Binky] ٹھیک ہے. میں صرف یہاں Y جاؤ اور 13 نمبر قائم کریں گے اور تو اور صرف محولہ لقب ضبطی کے چھڑی لے ... [بنبنا آواز] واہ! [لڑکا اسپیکر] اوہ، ارے، یہ کام نہیں کیا. ، Binky کا کہنا ہے کہ میرے خیال میں، نہیں Y محولہ لقب ضبطی ایک اچھا خیال ہے کیونکہ pointee قائم کرنے میں ایک علیحدہ قدم ہے مجھے نہیں لگتا کہ ہم نے کبھی بھی اس نے کیا کیا. [Binky] ہمم، اچھی بات ہے. [لڑکا اسپیکر] جی ہاں. ہم پوائنٹر Y مختص لیکن ہم نے اسے قائم کبھی بھی ایک pointee کی طرف اشارہ ہے. [Binky] ہم، بہت اچھا مشاہدہ ہے. [لڑکا اسپیکر] ارے، آپ کو اچھی وہاں تلاش کر رہے ہیں، Binky. یہ آپ تاکہ ایکس کے طور پر ایک ہی pointee Y پوائنٹس ٹھیک کر سکتے ہیں >> [Binky] ضرور. میں اپنے پوائنٹر تفویض کی جادو کی چھڑی کا استعمال کریں گے. [لڑکا اسپیکر] ہے کہ پہلے کی طرح ایک مسئلہ ہونے جا رہا ہے؟ [Binky] نہیں، یہ pointees چھو نہیں ہے. یہ صرف ایک پوائنٹر تبدیل، ایک دوسرے کے طور پر ایک ہی بات کی طرف اشارہ ہے. [آواز پوپ آؤٹ ہیں] [لڑکا اسپیکر] اوہ، میں دیکھ رہا ہوں. اب X کے طور پر ایک ہی جگہ پر Y پوائنٹس. تو انتظار کریں. اب Y طے ہو گئی ہے. یہ ایک pointee ہے. تو آپ پھر محولہ لقب ضبطی 13 بھیجنے کے چھڑی کرنے کی کوشش کر سکتے ہیں. [Binky] اوہ، ٹھیک ہے. یہاں جاتا ہے. [آواز پوپ آؤٹ ہیں] [لڑکا اسپیکر] ارے، اس کو دیکھو. اب Y پر کام محولہ لقب ضبطی. اور اس وجہ سے اشارہ ہے کہ ایک pointee اشتراک کر رہے ہیں، وہ دونوں 13 دیکھیں. [Binky] جی ہاں، اشتراک. جو بھی ہے. تو کیا اب ہم مقامات پر تبدیل کرنے جا رہے ہیں؟ [لڑکا اسپیکر] ارے دیکھو، ہم وقت سے باہر ہیں. >> [] Binky لیکن - [لڑکا اسپیکر] 3 پوائنٹر قوانین یاد ہے. نمبر 1، بنیادی ڈھانچے یہ ہے کہ آپ کو ایک پوائنٹر ہے اور یہ pointee اشارہ. لیکن پوائنٹر اور pointee الگ الگ ہیں، اور عام غلطی پوائنٹر قائم کرنے لیکن یہ ایک pointee دینے کو بھولنا. نمبر 2، پوئینٹر محولہ لقب ضبطی پوائنٹر شروع ہوتا ہے اور اس سے زیادہ اس کا تیر مندرجہ ذیل اس pointee تک رسائی حاصل کرنے کے لئے. جیسا کہ ہم جانتے ہیں کہ یہ تمام کام صرف کام کرتا ہے اگر وہاں ایک pointee ہے، جس قسم کے واپس ہو جاتا ہے نمبر 1 پر راج ہے. نمبر 3، پوئینٹر تفویض ایک پوائنٹر لیتا ہے اور اسے تبدیل دوسرے پوائنٹر کے طور پر ایک ہی pointee کی طرف اشارہ ہے. تو، 2 اشارہ تفویض کے بعد اسی pointee کی طرف اشارہ کریں گے. کبھی کبھی بھی اشتراک کہا جاتا ہے. اور یہ کہ اس واقعی ہے. الوداع. یہ Binky ہے. یہ CS50 ہے. ہم اگلے ہفتے آپ کو نظر آئے گا. [تعریف] [CS50.TV]