[موسیقی بجانے] DAVID J. MALAN: ٹھیک ہے. یہ CS50 ہے، اور یہ چار ہفتے کے آخر ہے. اور موضوعات میں سے ایک آج ڈیجیٹل فوریںسک کی ہے کہ، معلومات کی وصولی کے فن. اور یقینا، اگرچہ آپ درمیان میں ہیں اب امن کے تین میں اور بریکآؤٹ، اگلے ہفتے، توجہ مرکوز ہو جائے گا خاص طور پر اس ڈومین. بہترین ملازمتوں کی ایک تو میں نے کبھی تھا، واپس گریجویٹ اسکول میں تھا میں مقامی کے لئے کام کر رہا تھا جب مڈل سیکس کاؤنٹی ڈسٹرکٹ اٹارنی کی دفتر، کر عدالتی کام. تو بنیادی طور پر، میسا چوسٹس ریاستی پولیس، اس موقع پر، مقدمات پر کام کرتے وقت کرے گا ہارڈ ڈرائیوز کی طرح چیزوں میں لانے اور فلاپی ڈسک اور میموری کارڈ اور طرح. اور وہ ان کے حوالے کرے گا مجھے اور میرے استاد کو، اور ہمارا مقصد ثبوت تلاش کرنے کے لئے تھا، ان میڈیا پر کسی بھی، وہاں تھا تو. اب، تم نے دیکھا ہے ہو سکتا ہے جھلکیاں عدالتی کے اس دنیا کی میڈیا، ٹی وی اور فلموں میں. لیکن کام میں تھا، اور daresay ہے کہ دنیا، آپ اسے دیکھیں گے کی طرح کافی نہیں ہے. کے میں ایک نظر ڈالیں کیا آپ کو شاید دیکھا ہے. [ویڈیو پلے بیک] ٹھیک ہے. اب، آپ پر ایک اچھی نظر حاصل. [موسیقی بجانے] اس -Hold. واپس چلائیں. ایک منٹ رکو. درست جانا. -There. کہ منجمد. مکمل سکرین. ٹھیک ہے. کہ منجمد. آپ، اس پر گا -Tighten؟ اس پر میں -Vector واپس وہیل کی طرف سے آدمی. یہاں اس موقع پر میں -Zoom. صحیح سامان ساتھ میں، تصویر بڑھا اور تیز کیا جا سکتا. کہ کیا ہے؟ یہ ایک اضافہ پروگرام ہے. کہ کوئی واضح آپ -Can؟ مجھے پتہ نہیں ہے. یہ اضافہ کرتے ہیں. -Enhance سیکشن A6. میں تفصیل میں اضافہ، and-- مجھے اضافہ کرنے کے لئے کافی ہے. میرے سکرین پر اس کی رہائی. میں نے اس کی آنکھوں میں عکاسی بڑھا. -چلو کے ذریعے اس کو چلانے ہے ویڈیو بڑھانے. -Edgar، آپ اس کو بہتر بنانے کے کر سکتے ہیں؟ پر -Hang. اس کی عکاسی پر کام کر رہے -I've. -There کی کسی کی عکاسی. -Reflection. آدمی کے چہرے کی عکاسی -There ہے. -The عکاسی! عکاسی -There ہے. آئینے میں -Zoom. تم ایک عکس دیکھ سکتے ہیں. آپ یہاں سے تصویر کو بڑھانے کے -Can؟ آپ اس میں اضافہ -Can؟ آپ اس میں اضافہ -Can؟ ہم اس کو بہتر بنانے کے -Can؟ آپ اس میں اضافہ -Can؟ ایک دوسرے پر -Hold. میں اضافہ کریں گے. دروازے پر میں -Zoom. 10 -Times. -Zoom. میں -Move. -More. رکو، کو روکنے کے. سٹاپ. اس -Pause. ہم 75 ڈگری -Rotate عمودی کے ارد گرد، براہ مہربانی. سٹاپ. حصہ پر واپس جائیں دروازے کے بارے میں ایک بار پھر. بٹ نقشہ کر سکتے ہیں کہ ایک تصویر enhancer کے -Got؟ ہم پردیپ سنگھ استعمال کر سکتے ہیں -Maybe طریقہ ونڈوز میں دیکھنے کے لئے. -The سافٹ ویئر فن کی ریاست ہے. -The eigenvalue بند ہے. حق ساتھ میں یلگوردمز کا مجموعہ -He کے لیا الیومینیشن اگلے سطح پر یلگوردمز، اور میں ان کا استعمال کر سکتے ہیں اس تصویر کو بڑھانے کے. پر -Lock اور Z محور وسعت. -Enhance. کو بہتر بنانے کے. -Enhance. -Freeze اور بڑھانے. [END ویڈیو پلے بیک] DAVID J. MALAN: تو ہیں تمام الفاظ، لیکن وہ نہیں تھے درست طریقے سے جملوں میں استعمال کیا. اور یقینا مستقبل میں، کسی بھی وقت، ، اگر آپ کسی لفظ کو کہتے ہوئے سنتے ہیں، براہ مہربانی، صرف تھوڑا سا منہ دبا ہنسنا "، کو بہتر بنانے کے". آپ کو بہتر بنانے کے کرنے کی کوشش کریں کیونکہ جب، مثال کے طور پر، یہ کیا ہوتا ہے. تو یہاں ایک خوبصورت تصویر ہے. یہ CS50 اپنے Daven ہے. اور ہم چاہتے تھے کہ لگتا ہے ان کی آنکھوں میں چمک پر میں توجہ مرکوز، یا کی عکاسی واضح طور پر تھا کہ برا آدمی سیکورٹی کیمرے کی طرف سے قبضہ کر لیا. یہ کیا ہوتا ہے جب ہے آپ کو ایک تصویر پر میں زوم کہ صرف ایک محدود تعداد ہے اس کے ساتھ منسلک بٹس کی. کہ آپ کو مل جائے گا کیا ہے. اور یقینا، Daven کی آنکھ میں ، شاید چھ پکسلز لیکن چار کہ بالکل وہی جو تحریر وہاں glimmering تھا. تو مسئلہ سیٹ چار بالآخر پڑے گا آپ کو خاص طور پر، اس دنیا کی کچھ کی نوعیت کی طرف سے ہم فائل I / O، جہاں کال I / O کے صرف ایک پسند ہیں طریقہ ہے ان پٹ اور پیداوار کہہ. تو اس طرح اب تک، بات چیت کے تمام ہم نے ایک کمپیوٹر کے ساتھ پڑا ہے کے ساتھ بڑی حد تک کیا گیا ہے آپ کی کی بورڈ اور سکرین، لیکن ہارڈ ڈسک کے ساتھ اتنا نہیں، یا لوگ باہر فائلوں کی بچت آپ اپنے آپ کو لکھنے. آپ کے پروگراموں ابھی تک ہے نہیں، پیدا، اور بچت کیا گیا اور ان کے اپنے فائلوں کو اپ ڈیٹ. ویسے، ایک فائل کیا ہے؟ ویسے، ایک JPEG کی طرح کچھ. یہ آپ کو ہو سکتا ہے ایک تصویر ہے ہے یا فیس بک پر اپ لوڈ، یا کہیں ویب پر دیکھیں. بے شک، کہ تصویر ہم صرف Daven کے دیکھا ایک JPEG تھا. اور کیا دلچسپ ہے JPEGs طرح فائلوں کے بارے میں وہ شناخت کیا جا سکتا ہے، عام طور پر، بٹس کی مخصوص پیٹرن کی طرف سے. دوسرے الفاظ میں، کہ یہ کیا ہے ایک GIF سے ایک JPEG ممتاز ایک لفظ سے ایک پنگ سے ایک ایکسل فائل سے دستاویز؟ ویسے، یہ صرف مختلف ہے بٹس کے پیٹرن. اور ان مختلف پیٹرن ہیں عام طور پر ان فائلوں کے آغاز میں. آپ کے کمپیوٹر میں ایک لفظ کھولتا ہے جب کہ تو DOC، یا ایک کمپیوٹر ایک JPEG کھولتا ہے جب، اس میں عام طور پر لگتا ہے فائل میں پہلے کئی بٹس. اور یہ ایک پیٹرن کو تسلیم کرتا ہے تو، یہ اوہ، یہ ایک تصویر ہے، کا کہنا ہے کہ. مجھ سے یہ ظاہر کرتے ہیں گرافک کے طور پر صارف. یا، اوہ، یہ ایک لفظ دستاویز کی طرح لگتا ہے. مجھے ایک مضمون کے طور پر صارف کو یہ ظاہر کرتے ہیں. مثال کے طور پر تو، JPEGs کے، یہ، ہے باہر کر دیتا ہے کافی بہتر ہڈ کے نیچے. لیکن سب سے زیادہ ہر میں پہلے تین بائٹس JPEG ان تین کی تعداد کے ساتھ شروع. تو بائٹ صفر، ایک، اور دو میں ہیں، سب سے زیادہ ہر JPEG، 255، اور پھر نمبر 216، اور پھر نمبر 255. اور آپ کو قابل ہو جائے گا کیا اگلے ہفتے شروع کر اصل میں نیچے اندازی ہے JPEGs طرح فائلوں کی ہڈ اور بٹ نقشہ فائلوں کی طرح، اور دیکھ کر کیا ہمیشہ اس وقت تک کے لئے وہاں کیا گیا ہے آپ ایک کمپیوٹر کو استعمال کرتے ہوئے کیا گیا ہے کے طور پر. لیکن عام طور پر نہیں ہے کیا ہے اس طرح دشملو تعداد کی طرح لکھا. کمپیوٹر سائنسدانوں نہیں دشملو میں بات کرنے کے لئے ہوتے ہیں. وہ واقعی بائنری میں بات نہیں کرتے ہیں. عام طور پر، جب ہم چاہتے ہیں تعداد اظہار کرنے کے لئے، ہم اصل میں شش اعشاری کا استعمال، جو آپ کو یاد کر سکتے ہیں مسئلہ سیٹ، کا کہنا ہے کہ، سے چیلنج ہے جس سے ایک، آپ کو ایک مختلف نظام کے بارے میں سوچنے کے لئے. ہم، کورس کے، واقف ہیں نو کے ذریعے دشملو، صفر کے ساتھ. ہم بائنری کے بارے میں بات. اور ہم واقعی کی ضرورت نہیں ہے زیادہ سے زیادہ یہاں ہے کہ استعمال کرنے کے لئے باہر، کمپیوٹر استعمال کریں گے. لیکن پروگرامرز بہت ہو جائے گا اکثر، لیکن ہمیشہ نہیں، صرف جس کا مطلب ہے، شش اعشاری استعمال آپ کو آپ کے حروف تہجی میں 16 حروف ہے کے طور پر دو یا 10 کی مخالفت. تو کس طرح آپ کو اعلی شمار ہے شش اعشاری میں نو؟ تم جاؤ 0، 1، 2، 3، 4، 5، 6، 7، 8، 9، ایک، صرف کنونشن کی طرف سے C، D، E، F،، بی. لیکن جو اہم ہے کہ ہر ایک کو ہے ان کی ایک علامت ہے. کوئی 10 ہے. ہر ایک کی وجہ سے، کوئی 11، SE فی نہیں ہے آپ ہندسوں کے، دشملو میں پسند صرف بائنری میں طرح، صرف کرنا چاہئے کنونشن کی طرف سے ایک کردار، ہو. پھر ہم حروف تہجی ہے تاکہ شش اعشاری کے لئے ہمارے اختیار میں. تو ایک JPEG اگر آپ کی طرح دیکھو کیا ہے ان کی پہلی تین لکھنے تھے ، دشملو کے طور پر نہیں بائٹس لیکن مثال کے طور پر، شش اعشاری کے طور پر؟ اور کیوں ہیکس کہ مفید بھی ہے؟ ویسے، ایک مثال کے طور پر ایک فوری نظر. میں بٹس لکھنے تو کہ ان دشملو تعداد کی نمائندگی کرتے ہیں یہ ایک چھوٹا سا زنگ آلود ہو سکتا ہے اب چند ہفتوں سے، بائیں طرف ایک اور لیکن حق ایک بہت آسان ہیں. 255 سب سے بڑی تعداد ہم تھا آٹھ بٹس کے ساتھ نمائندگی کر سکتے ہیں. یہ تمام لوگوں کے تھا. تو ہلکا ہے کہ صرف ایک دلچسپ مشرق سے ایک ہے. اور تم قسم کی کرتے ہیں تو ریاضی، آپ کو، یقینا، کہ نتیجہ نکالنا گا ایک کی ہے کہ پیٹرن اور zeros کی 216 کی نمائندگی کرتا ہے. تو صرف کے لئے شرط ہیں اب یہ درست ہے. لیکن کیوں یہ دلچسپ ہے؟ ویسے، ایک بائٹ، کورس کے، آٹھ بٹیں ہے. اور یہ آپ کو لگتا ہے کہ باہر کر دیتا ہے چار بٹیں کے دو حصوں کے طور پر ایک بائٹ کی، اس طرح. مجھے صرف کچھ جگہ شامل ہیں. تو اس سے پہلے، اس کے بعد. میں صرف کچھ سفید جگہ شامل کیا ہے یہاں تصور کی خاطر. ہم کس طرح اب میں نمائندگی کر سکتے ہیں، کا کہنا ہے کہ، شش اعشاری بٹس میں سے ہر ایک کواڈ، چار بٹس میں سے ہر ایک سیٹ؟ مثال کے طور پر، بائیں طرف تو اب، ہم بائنری میں 1111 ہے. دشملو میں یہ تعداد کیا ہے، آپ کو ریاضی کرتے ہیں؟ آپ والوں کی جگہ ہے، twos جگہ، چوکے کی جگہ، اور آٹھ جگہ. سامعین: 15. DAVID J. MALAN: یہ 15 ہے. تو ہم آٹھ کے علاوہ چار کرتے ہیں کے علاوہ دو کے علاوہ ایک، ہم 15 ملتا ہے. تو میں نیچے 15 لکھ سکتے ہیں 1111، لیکن یہاں پورے نقطہ شش اعشاری ہے، نہیں دشملو. تو بجائے اس کے نیچے لکھ کے 15، 1-5، میں، ہیکس میں لکھنے جا رہا ہوں اگر آپ کو، واپس لگتا ہے کہ جس میں F تک صفر، کیا 15 کی جا رہی ہے؟ سامعین: F. DAVID J. MALAN: تو اس کی ایف باہر کر دیتا ہے. اور تم کہہ کر کہ باہر کام کر سکتے ہیں، 10 ہے تو ٹھیک ہے،، پھر ٹھیک ہے، F 15 ہے. تو یقینا، ہم کو دوبارہ سے لکھنا کر سکتے ہیں F پر کے طور پر تعداد کی یہ وہی سیٹ. اور پھر ہم ریاضی کے تھوڑا سا کرتے ہیں تو، ہم کہ ڈی ہے کہ نتیجہ نکالنا گا. آٹھ، بہت آسان ہے کیونکہ ہم آٹھ جگہ میں ایک ایک ہے. اور پھر، ہم F پر کے ایک جوڑے کی ہے. تو کیا انسانوں کنونشن کی طرف سے ایسا کرنے کی کوشش کرتے ہیں وہ استعمال کرتے ہیں جب وہ صرف شش اعشاری ہے زیادہ succinctly یہ تھوڑا لکھنے، کہ سفید جگہ کے سب سے زیادہ سے چھٹکارا حاصل. اور صرف سپر واضح ہو یہ شش اعشاری ہے کہ قارئین، میں سادہ کنونشن انسان آپ کو صفر لکھنا ہے دیگر کوئی مطلب نہیں ہے جس میں ایکس، کے ایک بصری شناخت سے، یہاں ایک ہیکس تعداد آتا ہے. اور پھر، آپ کو، F دو ہندسے ڈال اس معاملے میں F، تو D ایک، پھر ایف ایف. تو لمبی کہانی مختصر، شش اعشاری صرف جاتا ہے مفید ہو میں سے ہر ایک کی وجہ سے اس ہندسے، F تک صفر، بالکل لائنز چار بٹس کی ایک پیٹرن کے ساتھ. آپ کو دو شش اعشاری ہندسے ہیں تو، صفر بار بار F، کے ذریعے، کہ بالکل آپ کو دیتا ہے آٹھ بٹیں یا ایک بائٹ. اس کے لئے جاتا ہے یہی وجہ ہے کہ روایتی مفید ہو. کوئی دانشور ہے واقعی اس سے باہر کے مواد، اس کی اصل افادیت کے مقابلے میں دیگر. اب JPEGs کے صرف نہیں ہیں گرافکس کے لئے کی تراتیب دائر. تم وہاں ہو یاد کر سکتے ہیں دنیا میں اس طرح کی فائلوں کو، کم از کم ایک چند سال سے. تو یہ اصل میں تھا ونڈوز ایکس پی میں نصب دنیا بھر میں پی سی کی لاکھوں پر. اور یہ ایک بٹ نقشہ فائل، BMP تھا. اور ایک بٹ نقشہ فائل کے طور پر، آپ کو اگلے دیکھیں گے ہفتے، صرف بندیاں کی ایک پیٹرن کا مطلب ہے، وہ کہتے رہے ہیں کے طور پر پکسلز، ایک بہت، بٹس پر نقشہ. تو کیا اگرچہ، دلچسپ ہے، اس فائل کی شکل، BMP کے بارے میں ہے، کہ ہڈ کے نیچے، یہ صرف تین بائٹس سے زیادہ ہے تاکہ، اس کے ہیڈر تحریر ، پہلے چند کاٹنے بات کرنے کے لئے. یہ اصل میں ایک چھوٹا سا لگ رہا ہے پہلی نظر میں پیچیدہ. اور تم P سیٹ میں دیکھیں گے. اور کچھ حاصل کرنے کے اس کی خاص طور پر اب باہر صرف حقیقت یہ ہے کہ کے طور پر، اتنا اہم نہیں ہے کہ ہر بٹ نقشہ کے آغاز میں فائل، ایک گرافیکل فارمیٹ، اعداد کی ایک پوری چڑھانے ہے. اب مائیکروسافٹ، اس کی شکل کے مصنف، ان کو فون کرنے کے لئے جاتا چیزیں نہیں ints اور حروف اور floats لیکن الفاظ اور D الفاظ اور چاہتا ہے اور بائٹس. تو وہ صرف مختلف اعداد و شمار اقسام ہیں. وہ مختلف ناموں ہیں ایک ہی بات کے لئے. لیکن آپ P سیٹ چار میں دیکھیں گے کہ. لیکن اس کا کہنا ہے کہ صرف یہ ہے کہ ایک انسان تو پر کچھ BMP فائل ڈبل کلکس ان یا اس کی ہارڈ ڈرائیو، اور ایک ونڈو کو کھولتا ہے اس کا یا اس کے کہ تصویر دکھا اپ، کہ آپریٹنگ کیونکہ ہوا نظام شاید نہ صرف محسوس کیا BMP فائل توسیع فائل کے نام میں، بلکہ حقیقت یہ ہے کہ وہاں کچھ بٹس کی طرز پر کنونشن بہت شروع میں کہ بٹ نقشہ فائل کی. لیکن اب پر توجہ مرکوز اس طرح ایک پیچیدہ فائل، لیکن اس کی بجائے اس طرح کچھ. میں، gedit میں یہاں لگتا ہے صرف آغاز ہے بہت آسان ہے کہ ایک پروگرام کی. میں نے کچھ اوپر بھی شامل ہے. اب میں ہے # شامل "structs.h" لیکن میں ایک لمحے میں واپس آ جائیں گے. لیکن یہ اب کے لئے مفید ہے. تو یہ ایک پروگرام ہے لاگو کرنے کے لئے جا رہا ہے رجسٹرار کے ڈیٹا بیس کی طرح. تو طالب علموں کی ایک ڈیٹا بیس، اور دنیا میں ہر طالب علم شاید کچھ ایک کا نام اور ایک گھر ہے اور دیگر چیزیں، لیکن ہم اسے سادہ رکھیں گے. ہر طالب علم کو ایک کا نام اور ایک گھر ہے. میں لکھنا چاہتا تھا تو جس کا مقصد زندگی میں پروگرام صرف سے iterate کرنے کے لئے کیا گیا تھا تین تک پر صفر، تین طالب علموں ہے تو ہارورڈ یونیورسٹی میں. اور میں صرف GetString استعمال، حاصل کرنے کے لئے چاہتے ہیں، ہر طالب علم کے نام اور گھر، اور پھر صرف ان لوگوں کو باہر پرنٹ. اس طرح کے ہفتے کی طرح ہے ایک ہفتہ قبل دو چیزیں اب، میں صرف کے لئے چاہتے ہیں، جہاں لوپ یا اس طرح کچھ. اور میں GetString ایک چند فون کرنا چاہتے ہیں اوقات، اور پھر چند بار F پرنٹ. تو میں اگرچہ، یہ کیسے ہو سکتا ہے، جب ایک کا نام اور ایک گھر دونوں ہر طالب علم کے لئے شامل کر رہے ہیں؟ تو میری پہلی سنتیں طاقت اس طرح کچھ کرنا ہو. میں سب سے پہلے اچھی طرح سے، مجھے دے، کہہ سکتے ہیں، ، نام نامی ڈور کی ایک صف ہے. اور میں نے ایک hardcode تین یہاں نہیں کرنا چاہتا. کیا میں وہاں میں ڈال کرنا چاہتے ہیں؟ یہ صرف ہے کیونکہ، طالب علموں کو تو سب سے اوپر اعلان ایک مسلسل، میں hardcode کرنے کی ضرورت نہیں صرف اتنا ایک سے زیادہ مقامات میں تین. اس طرح، میں، یہ ایک جگہ تبدیل کر سکتے ہیں اور یہ ہر جگہ تبدیلی پر اثر انداز. اور پھر، میں کر سکتا ہے سٹرنگ طلباء واقع. اور اب، میں کچھ اس طرح کر سکتا ہے میں طالب علموں <؛ کے لئے (میں = 0 int میں + +. تو میں تیزی سے ٹائپ کر رہا ہوں، لیکن یہ ہے اب شاید واقف نحو. اور اب، اس سے زیادہ حال ہی میں کیا گیا تھا. مجھے ویں میں ڈال کرنا چاہتے ہیں تو طالب علم کا نام، مجھے ایسا لگتا ہے. اور پھر، نہ نام لیکن گھروں میں بریکٹ. میں اس، GetString کرتے، اور دو مجھے واپس جانا ہے اور اس لائن کو ٹھیک. اتفاق؟ اختلاف؟ یہ بہت صارف دوستانہ نہیں ہے. میں کیا کروں پر صارف نہیں بتایا ہے. لیکن اب، میں تو اس کے علاوہ بعد میں، دو کے لئے چاہتا تھا کا کہنا ہے کہ، ان چیزوں کو پرنٹ باہر کر تو TODO بعد. میں زیادہ کے ساتھ کیا کرنے جا رہا ہوں بلاشبہ اس this-- کے درست عمل نام اور گھروں، تین ہو رہی ہے ایک صارف کی طرف سے ہر ایک کی ان کی کل،. لیکن یہ بہت اچھا ڈیزائن، ٹھیک نہیں ہے؟ کیا ایک طالب علم کو صرف ایک نام ہے اور ایک گھر، لیکن یہ بھی ایک شناختی نمبر، اور ایک ٹیلی فون نمبر، اور ایک ای میل ایڈریس، اور شاید ایک گھر کے صفحے، اور شاید ایک ہی ٹوئٹر ہینڈل، اور دیگر تفصیلات کی کسی بھی تعداد ایک طالب علم یا ایک شخص کے ساتھ منسلک، عام طور پر. ہم شامل کرنے کے لئے شروع ہو جائے گا کے لئے کس طرح اس پروگرام کے لئے فعالیت؟ ٹھیک ہے، میں شاید آسان طریقہ کی طرح محسوس ، کی طرح کچھ کا کہنا ہے کہ کرنے کے لئے ہو، آئی ڈی کے طالب علموں int کی. تو میں وہاں میں ان کے تمام شناخت ڈال کر سکتے ہیں. اور پھر، کچھ کے لئے فون نمبر کی طرح، میں کس طرح اس بات کا یقین نہیں ہوں ابھی تک اس کی نمائندگی کرتے ہیں. تو آگے اور صرف کال جانے یہ طالب علموں، ٹوئٹر جس ایک چھوٹا سا عجیب ہے، لیکن ہے اور کھیتوں ایک گروپ زیادہ. میں مؤثر طریقے سے کرنے کے لئے شروع کر دیا ہے کاپی کریں اور یہاں پیسٹ. اور اس خوبصورت اضافہ کرنے کے لئے کی جا رہی ہے بہت تیزی سے unwieldy تھا، ٹھیک ہے؟ وہاں تھے تو یہ اچھا نہیں ہو گا دنیا میں ایک آنکڑا ڈھانچہ نام سے جانا جاتا ایک int یا ایک تار، لیکن کچھ کے طور پر اعلی سطح، ایک تجرید، تو ایک طالب علم کے طور پر جانا جاتا، بات کرنے کے لئے؟ C بلٹ میں کے ساتھ نہیں آیا تھا طالب علموں کے لئے فعالیت، لیکن میں نے اسے اس طرح دینا چاہتا تھا تو کیا ہوگا؟ ویسے، اس میں جا رہا ہوں، باہر کر دیتا ہے ، structs.h یہاں نامی ایک فائل کو کھولنے کے اور آپ بالکل ایسا کر سکتے ہیں. اور اب ہم یہ کر شروع کرنے کے لئے جا رہے ہیں. اور P سیٹ تین کے ہڈ کے نیچے، آپ نے پہلے ہی اب یہ کر رہا ہوں. ایک G RECT کے طور پر ایسی کوئی بات نہیں ہے یا پروگرامنگ زبان سی میں ایک جی اوول سٹینفورڈ میں لوگ ان سے لاگو یہاں اس نقطہ نظر کا استعمال کرتے ہوئے کی طرف سے اعداد و شمار اقسام، ان کے اپنے نئے اعداد و شمار کا اعلان ایک نئے مطلوبہ الفاظ کا استعمال کرتے ہوئے اقسام کہا struct اور دوسرے ایک کہا typedef کے. اور یقینا، اگرچہ نحو سامان سے تھوڑا مختلف لگ رہا ہے ہم میں، پہلے دیکھا ہے اصول، یہ سپر آسان ہے. یہ صرف "ایک قسم کی وضاحت." کا مطلب یہ ایک ہونے جا رہا ہے ساخت، اور ایک ڈھانچہ صرف ایک کنٹینر کی طرح ہے ایک سے زیادہ چیزوں کے لئے. اور اس کی ساخت کی جا رہی ہے نام ایک تار کرنے کے لئے، اور ایک تار گھر بلایا. اور صرف کی سہولت کے لئے، کہتے ہیں، اس پورے آنکڑا ڈھانچہ طالب علم. تو لمحے آپ کو حاصل کرنے کے لئے نیم وقفہ، اب آپ کے پاس آپ کے اپنے اعداد و شمار کے پیدا قسم نامی طالب علم اب کہ، int کے ساتھ کھڑا ہے اور فلوٹ، اور چار، اور سٹرنگ، اور جی RECT، اور جی اوول، اور کسی بھی تعداد دوسری چیزوں کے لوگوں کی ایجاد ہے. تو اس کے بارے میں مفید ہے اب میں واپس جائیں تو یہ ہے کہ 0 struct اور اس کو ختم کرنے میں نے لکھا ہے جس پر عمل درآمد، یہاں پیشگی، کہ تمام نوٹس ناگزیر messiness سے کی ہے کہ میں نے کہا کے طور پر ہو رہا ہے شروع کرنے کے بارے میں تھا فون نمبر اور ٹوئٹر اور تمام کرنے کے لئے ان دوسری چیزوں ایک طالب علم کی تعریف، اب یہ اور succinctly لپیٹ ہے طالب علموں کی صرف ایک صف کے طور پر. اور ان طالب علموں میں سے ہر ایک اب اس کے اندر ایک سے زیادہ چیزیں ہیں. ہے تاکہ صرف ایک سوال چھوڑ دیتا ہے. آپ کس طرح کے نام پر حاصل کرتے ہیں، اور گھر، اور ID، اور جو کچھ بھی ہے طالب علم کے اندر؟ سپر آسان، کے ساتھ ساتھ. نئے نحو، لیکن ایک سادہ خیال. صف میں آپ کو صرف انڈیکس، ہم نے گزشتہ ہفتے اور اس کے طور پر کیا. اور کیا واضح طور پر ہے نحو کی نئی ٹکڑا ہے؟ بس.، جس کا مطلب ہے "اندر جاؤ ساخت اور میدان کہا جاتا ہو نام،، گھر بلایا میدان طالب علم کہا جاتا میدان ملتا ہے. " تو P سیٹ تین میں، آپ ہیں اب بھی اس پر کام کر رہے، اب بھی اور سب سے زیادہ لوگ ، آپ کے طور پر احساس ہے کہ رہے ہیں کی طرح چیزوں کا استعمال شروع جی منتقلی اور جی ovals کے اور دوسری چیزوں کے لئے لگ رہے ہو نہیں ہے ہفتے صفر، ایک، یا دو سے آتے ہیں، سٹینفورڈ کیونکہ احساس ہے کہ کچھ نئے اعداد و شمار اقسام کا اعلان. اور یقینا، کہ بالکل کیا ہم کریں گے P سیٹ چار میں، کے ساتھ ساتھ، کرتے، جب ہم چیزوں کے ساتھ نمٹنے کے لئے شروع تصاویر، bitmaps کے، اور زیادہ کی طرح. تو یہ صرف ایک جھلکی ہے اور ایک ہے آنے کے لئے کیا ہے کے لئے ذہنی ماڈل. اب، میں بلا ضرورت تاخیر تھوڑا سا اس صبح. میں کیا دیکھنے کے لئے قسم کی عجیب تھا مائیکروسافٹ وال پیپر اصل آج کی طرح لگتا ہے. اور یہ 2006 میں کسی باہر کر دیتا ہے اصل میں تقریبا خاص طور پر لئے گئے تھے اسی جگہ حقیقت میں تصویر کیا ان دنوں اس طرح لگ رہا ہے. میدان اب تھوڑا overgrown ہے. تو تصاویر کے اب بات، یہاں Daven واپس لانے سکرین اور نکولس پر، اور صرف آپ کو یاد دلانے کہ آپ کو دوپہر کے کھانے کے لئے ہمارے ساتھ شامل کرنے کے لئے چاہتے ہیں تو ہمارے معمول کے یو آر ایل پر اس جمعہ، سر یہاں. تو جہاں ہم نے پیر کو بند کر چھوڑ دیا؟ ہم، اس مسئلہ کو متعارف کرایا؟ یہ بظاہر ایک درست تھا سویپ کے عمل، جس کے تحت آپ کو، دو ints کے لے ایک، بی کہا جاتا، ایک ملاقات کی لورا یہاں کیا، جیسا کہ ان کے تبادلہ دودھ اور پانی کے ساتھ اسٹیج پر، ایک عارضی استعمال کرتے ہوئے کی طرف سے متغیر، یا ایک خالی کپ، ہم ایک اور ایک میں B ڈال سکتے ہیں تا کہ چیزوں کی گندگی کرنے کے بغیر بی. ہم نے ایک متغیر کا استعمال کیا. یہ عارضی کہا جاتا ہے. لیکن بنیادی کیا تھا پیر کو اس کوڈ کے ساتھ مسئلہ ہے؟ یہاں مسئلہ کیا تھا؟ جی ہاں. سامعین: یہ زیادہ جگہ لیتا ہے. DAVID J. MALAN: زیادہ لیتا ہے خلائی، میں ایک متغیر کا استعمال کرتے ہوئے کر رہا ہوں کیونکہ، اور یہ ٹھیک ہے. یہ سچ ہے، لیکن میں ہوں یہ ٹھیک ہے کا کہنا ہے کہ کرنے کے لئے جا. یہ گرینڈ میں صرف 32 بٹس ہے چیزوں کی منصوبہ بندی، تو نہیں ایک بڑا سودا. دیگر خیالات؟ سامعین: یہ صرف سویپ مقامی طور پر متغیر. DAVID J. MALAN: بالکل. یہ صرف مقامی طور پر متغیر سویپ. کسی بھی وقت آپ کو ایک تقریب کال کی وجہ سے میں Annenberg میں سے ٹرے تھا آخری بار، آپ کو سب سے نیچے پر اہم ہے. جیسے ہی آپ کے نام سے ایک تقریب کہتے ہیں کے طور پر سویپ، سویپ X اور Y حاصل نہیں ہے، اصل اقدار. کیا ہم دعوی کیا، سویپ حاصل کرتا ہے؟ سامعین: نقول. DAVID J. MALAN: ان کی کاپیاں تو. تو یہ آپ ہیں تو، ایک اور دو ہو جاتا ہے آخری بار سے مثال یاد، لیکن ایک اور دو کی ایک کاپی اس کامیابی کے ساتھ تبدیل کر رہے ہیں. لیکن بدقسمتی سے آخر میں، ان اقدار کو اب بھی ایک ہی ہیں. تو ہم ساتھ اس کو دیکھ سکتے ہیں ہماری نئے دوست، امید ہے کہ GDB، آپ یا آپ کی TFs اور CA ہے کہ مندرجہ ذیل کے طور پر کی طرف آپ کی رہنمائی کی گئی. تو کوئی سویپ یاد چلو like-- لگتا ہے اس طرح this-- لگتا ہے کھولنے. ہم دو، ایک سے Y ایکس initialized ہے. پرنٹ F کی ایک گروپ تھا. لیکن اس وقت، اہم کال یہاں، تبادلہ کرنے کے لئے تھا جس میں بالکل کوڈ ہم ہے پہلے صرف ایک لمحے کو دیکھا. جو سب سے پہلے درست ہے نظر، لیکن فعل، اس پروگرام کی وجہ سے کام نہیں کرتا، اسے مستقل طور پر X اور Y تبادلہ نہیں ہے. تو، ایک فوری گرم یہ دیکھنے دو یہاں GDB، ایک ./noswap کے ساتھ. زبردست معلومات کا ایک گروپ ہے کہ میں اب کے لئے کنٹرول L کے ساتھ سے چھٹکارا مل جائے گا. اور اب، میں جا رہا ہوں آگے بڑھو اور اس کے چلانے. اور بدقسمتی سے، کہ کہ مفید نہیں تھا. یہ اس کے اندر پروگرام بھاگ گیا پروگرام، GDB، debugger کی ملاقات کی لیکن یہ میرے ارد گرد ڑکیلنا کی اجازت نہیں تھی. تو میں نے اصل روک سکتے ہیں کس طرح اس پروگرام کے اندر عملدرآمد؟ تو توڑنے. اور میں کسی پر توڑ سکتا ہے لائن نمبر، ایک، 10، 15. لیکن میں نے بھی علامتی توڑ سکتا ہے وقفے اہم کہہ کر. اور یہ کہ ایک وقفے کے قائم کرنے کے لئے جا رہا ہے نقطہ، بظاہر اہم لائن 16 میں. اور جہاں 16 لائن ہے؟ کوڈ تک جانے دو اور noswap تک جانا. اور یقینا، 16 لائن ہے بہت پہلے پروگرام میں. تو اب، میں آگے بڑھو اور ٹائپ کریں ، اس وقت چلانے درج کریں، اسے روک دیا. تو ارد گرد ڑکیلنا ہیں. کیوں ایکس صفر ہے x-- پرنٹ؟ اور ڈالر کا نشان کو نظر انداز. یہ اچھے کے لئے صرف ہے پروگرام کے استعمال کے. کیوں اس وقت ایکس صفر ہے؟ جی ہاں. سامعین: یہ ٹھیک ہے پہلے روک دیا گیا 16 لائن، اصل میں نہیں ہے 16 لائن پر. DAVID J. MALAN: بالکل. GDB، ڈیفالٹ کی طرف سے، روک دیا گیا ہے صرف 16 لائن سے پہلے عملدرآمد. تو یہ، پھانسی نہیں ہے جس کسی نامعلوم قدر کی ہے ایکس کا مطلب ہے. اور ہم یہ ہے کہ خوش قسمت ہے صفر کی طرح صاف کچھ. تو اب میں اگلے ٹائپ کریں، اب یہ 16 پھانسی. مجھے 17 پر عمل کرنے کے لئے یہ انتظار کر رہا ہے. مجھے آگے اور پرنٹ ایکس جانے دو. یہ ایک ہے. مجھے آگے اور پرنٹ Y جانے دو. اب مجھے کیا دیکھنا چاہئے؟ سامعین: [اشراوی] DAVID J. MALAN: ایک زور. سامعین: [اشراوی] DAVID J. MALAN: بالکل نہیں اتفاق رائے. تو جی ہاں، ہم نے کچھ ردی کی ٹوکری کی قیمت کو دیکھنے کے. اب، Y وہاں 134514064 ہے. ویسے، یہ صرف کچھ ردی کی ٹوکری کی قیمت ہے. میرا پروگرام RAM استعمال کرتا ہے مختلف مقاصد کے لئے. دیگر افعال ہے. دوسرے لوگوں کو اپنے کمپیوٹر کے اندر لکھا. لہذا ان بٹس کے لئے استعمال کیا گیا ہے دیگر اقدار، اور میں کیا دیکھ رہا ہوں کچھ کی باقیات ہے کہ میموری کے پہلے استعمال. تو کوئی بڑی بات نہیں، کیونکہ جیسے ہی میں اگلے ٹائپ کریں اور پھر Y پرنٹ کے طور پر، اس initialized ہے. میں چاہتا ہوں کہ قیمت. تو اب، کی ایک چھوٹی سی تیزی سے آگے بڑھو. اگلے کے لئے ن. اسے دوبارہ کرتے ہیں. اسے دوبارہ کرتے ہیں. لیکن مجھے مارنے کے لئے نہیں کرنا چاہتے ہیں اسے یہاں، کیونکہ میں نے تو اندر کیا ہو رہا ہے کو دیکھنے کے لئے چاہتے ہیں سویپ کے، حکم کیا ہے؟ سامعین: اقدامات. DAVID J. MALAN: اقدامات. تو یہ ایک میں مجھے اقدامات بلکہ اس سے زیادہ سے زیادہ تقریب،. اور اب، یہ ایک چھوٹا سا خفیہ ہے ایمانداری، لیکن یہ صرف ہے اب میں لائن 33 میں ہوں مجھ سے کہہ رہا. اور پھر اس کے کیا. پرنٹ عارضی. ردی کی ٹوکری کی قیمت، منفی اس وقت، لیکن یہ صرف اب بھی ایک ردی کی ٹوکری کی قیمت ہے. تو اگلا، پرنٹ عارضی کرتے ہیں. یہ، 1 ہے initialized ہے جس ایک ارف X کی قدر، تھا. اب، جہاں ہمارے ایک ہیں اور سے آنے والے ایکس؟ ٹھیک ہے، ہم، اہم نوٹس ان اقدار X اور Y کو بلایا. اس کے بعد ہم مندرجہ ذیل کے طور پر ان کا تبادلہ کرنے کے لئے منظور. X کوما Y، سب سے پہلے آیا. اور پھر، سویپ ان X اور Y کہہ سکتے ہیں. لیکن وضاحت کے لئے، یہ ہے A اور B بلا. لیکن ایک اور ب اب جا رہے ہیں بالترتیب X اور Y، کی کاپیاں. میں، عارضی واپس GDB کے لئے جانا تو اب ایک ہے اور اب سے ایک ہے. میں اب آگے کیا اور لیکن اگر پرنٹ کرنا ایک، ایک کے دوران پہلے ہی دیا گیا ہے. دودھ سابق میں ڈالا گیا ہے سنتری کا رس کی گلاس، یا اس کے برعکس. اور اب اگلا پھر، اور اگر میں وویک چیک کے طور پر باہر پرنٹ، اب بھی دو، لیکن بی اب سے ایک ہے. سچ کہوں تو، یہ اب بھی ہے. میں کیا عارضی پرواہ نہیں ہے. لیکن جیسے ہی میں نے اب ٹائپ کے طور پر،، کا کہنا ہے کہ اب میں آخر میں ہوں، واپس جانے کے لئے جاری پروگرام. اور بدقسمتی سے، ایکس ہے اب بھی ایک اور Y اب بھی دو ہے. تو GDB کی افادیت کیا تھا؟ یہ مجھے ٹھیک کرنے میں مدد نہیں کی مسئلہ SE فی، لیکن یہ امید ہے کہ میری مدد احساس کی طرف سے یہ سمجھ کہ جی ہاں، میری منطق صحیح ہے، لیکن میرا کوڈ بالآخر نہیں ہے ایک مستقل اثر. تو ہے کہ ہم ہیں ایک مسئلہ ہے آج حل کرنے کے لئے کی جا رہی. لیکن اس کی راہ کی طرف سے حاصل ہے. سلک ایک جھوٹ ہے. یہ بھی، ایک ڈیٹا کی قسم یہ بات سی میں موجود ہے کچھ کے لئے ایک متبادل گیا کچھ کے لئے وقت، اور ہم کے طور پر مندرجہ ذیل ہے کہ ظاہر کر سکتے ہیں. مجھے آگے بڑھیں اور کھول دو پروگرام کا موازنہ 0 بلایا. اور یہ ایک ٹائپ کی بجائے، ہم کوڈ کے ذریعے چلنے کے لئے شروع کریں گے میں نے پہلے ہی لکھا ہے، لیکن یہ صرف ایک چند لائنوں کے ہے. تو اس کا موازنہ-0 ہے. اور پہلی بات میں کر رہا ہوں متن کی ایک لائن ہو رہی ہے. لیکن میں محسوس کیا پہلی بار کے لئے کام کر رہے. کیا واضح طور پر 21 لائن کے بارے میں مختلف کیا ہے؟ اصل میں، ایک منٹ رکو. یہ کاپی دو ہے. یہاں تک کہ حق پروگرام نہیں ہے. ٹھیک ہے، بگاڑنے الرٹ. ٹھیک ہے، تو کوئی بات نہیں. کہ مستقبل کے سوال کا جواب ہے. یہاں 0 کا موازنہ، اور میں ہوں متن کی ایک لائن حاصل کرنے کے لئے کے بارے میں. پروگرام کے بہت آسان. تو یہ براہ راست ہے. یہ ایک ہفتے، ہفتہ دو چیزیں کی طرح ہے اس وقت. سٹرنگ = GetString. اب، میں یہاں پھر سے کہو. سٹرنگ T = GetString کے. اس میں اور اس کے بعد، آخری بات پروگرام، اس کے نام سے پتہ چلتا ہے کے طور پر، میں نے ان کا آپس میں موازنہ کرنے کی کوشش کرنے جا رہا ہوں. تو تو سب سے پہلے سٹرنگ، = T، تو میں ہوں برابر آپ ایک ہی بات ٹائپ کہنے جا رہا. ورنہ، میں کہنے جا رہا ہوں آپ کو مختلف چیزیں ٹائپ. تو مرتب اور اس پروگرام چلاتے ہیں. تو صفر موازنہ بنانے کے. اچھا لگ رہا ہے. کوئی تالیف غلطیاں. اب مجھے آگے بڑھو اور ./compare 0 ٹائپ. مجھے آگے بڑھیں اور کچھ کا کہنا ہے کہ : Daven اور کچھ: روب. اور میں مختلف چیزیں ٹائپ. اب تک تو اچھا. پروگرام صحیح لگتا ہے. لیکن پھر اسے چلاتے ہیں. کچھ تو کہو: Gabe کی. کچھ تو کہو: Gabe کی. ٹھیک ہے. شاید میں خلائی بار مارا یا funky کچھ. اسے دوبارہ کرتے ہیں. کیا Zamyla تو. کیا Zamyla. مختلف چیزیں. تو کیا ہو رہا ہے؟ تو ہم نے ان دو لائنیں کوڈ، GetString کا دو بار کہا جا رہا. اور پھر، میں صرف ہوں اور ٹی موازنہ کرنے کی کوشش کر. لیکن چل رہا ہے تو کیا واقعی؟ کرنے کے لئے ٹھیک ہے، میری لکھاوٹ کے بارے میں کسی حد تک اس مثال کسائ. اور اصل میں پھینک دو اس کو یہاں، کے طور پر بھی. تو ہم نے ایک لائن کی طرح ہے سٹرنگ = GetString. تو ہے کہ صرف سب سے پہلے ہے اس پروگرام سے دلچسپ لائن. لیکن اس وقت کیا گیا ہے ہڈ کے نیچے جا رہا ہے؟ ویسے، بائیں ہاتھ پر کی طرف سٹرنگ ہے، جو متغیر کے کچھ قسم کی ہے، اور اس کے نام ہے. تو میں اس میموری کو استعمال کرتے ہوئے کیا جاتا ہے جانتے ہیں کہ، یا RAM، کسی نہ کسی طرح میرے کمپیوٹر میں. تو میں نظریاتی جا رہا ہوں ایک مربع کے طور پر اس کو اپنی طرف متوجہ. 32 بٹس، یہ پتہ چلتا ہے، لیکن مستقبل میں اس پر زیادہ. اور پھر، کیا یہاں ہو رہا ہے؟ ٹھیک ہے، ظاہر کر GetString صارف سے ایک تار ملتا ہے. اور GetString ہے کیا Zamyla یا Gabe کی یا Daven. تو سب سے پہلے کا انتخاب کرتے ہیں ان میں سے، Daven تھا. تو مؤثر طریقے سے، کیا ہے GetString ہے مجھے اس پہلی صورت میں D ایک وی ای N تھا. اور پھر، اور کیا کیا اس نے مجھے چپکے سے دے؟ سامعین: [اشراوی] DAVID J. MALAN: جی ہاں، / 0 یا شہوت انگیز null کردار. تو یہ مؤثر طریقے سے مجھے ایک تار دیا. لیکن ہم پہلے ہی گزشتہ سے جانتے ایک تار ایک صف ہے کہ لگتا ہے حروف کی، اور اس کی طرف سے ختم کر رہا ہے اس خصوصی سینٹینل کردار، / 0. لیکن اگر یہ سچ ہے اور یہ ایک مربع ہے، یہ واضح طور پر ایک بہت بڑا مستطیل ہے. اور یقینا، یہ ہے، میں، صرف 32 بٹس کا دعوی. اور یہ واضح طور پر زیادہ سے زیادہ 32 ہے بٹس، شاید یہ ہے کیونکہ آٹھ کے علاوہ آٹھ کے علاوہ آٹھ کے علاوہ آٹھ کے علاوہ آٹھ، صرف ASCII میں بائٹس کی وجہ سے. کس طرح heck ہم فٹ ہونے کے لئے جا رہے ہیں یہاں اس چھوٹے باکس میں Daven؟ ٹھیک ہے، اصل میں GetString کر ہے؟ ویسے، اس گرڈ یہاں کی نمائندگی کرتا ہے اپنے کمپیوٹر کی میموری یا رام. تو منمانے تو کہتے ہیں کہ ان میں سے ہر ایک، ایک بائٹ کی نمائندگی کرتا ہے پھر ہم میں سے ہر ایک کے بارے میں سوچ کر سکتے ہیں بائٹ ایک ایڈریس کے طور پر، 33 آکسفورڈ سٹریٹ، یا 34 کی طرح آکسفورڈ سٹریٹ، یا 35 آکسفورڈ سٹریٹ. تو گھروں پتے کی طرح اور عمارتوں پتے، تو کی انفرادی بائٹس کرنا میموری پتوں یا تعداد ہے اس منفرد ان کی شناخت. اب، یہ صوابدیدی ہے. لیکن میں جا رہا ہوں، آسان رکھنے کے لئے صرف کنونشن کی طرف سے شش اعشاری کا استعمال، لیکن ایک 0x میں دیگر کچھ نہیں کا مطلب ہے کہ سے "یہ شش اعشاری ہے." اور میں یہ دعوی کرنے کے لئے جا رہا ہوں "D" کی یاد میں بائٹ ایک میں ختم ہو جاتی ہے. میں نے کچھ نہیں میں کیا چل رہا ہے میموری، تو Daven پہلی جگہ ہے بائٹ ایک میں. یہ، تو، 0x2 جا رہا ہے. یہ 0x3 جا رہا ہے. یہ 0x4 جا رہا ہے. یہ 0x5 جا رہا ہے. یہ 0x6 جا رہا ہے. لیکن اگر آپ ایک بار سوچ شروع کیا کمپیوٹر کے کرنے کے بارے میں ہڈ کے نیچے، آپ اندازہ کرنے کے لئے شروع کر سکتے ہیں تم کس طرح، کچھ سال پہلے، گے خود C نافذ کر دیا ہے. شاید ہے GetString کیا ہے returning-- اس کی وجہ یہ نہیں ہے کی طرح لگتا ہے واپس لوٹنے Daven، SE فی، وہ ضرور نہیں ہے کیونکہ یہ چھوٹا سا box-- میں فٹ ہونے کے لئے تو کیا GetString کے شاید واپس آ رہا ہے؟ سامعین: [اشراوی] DAVID J. MALAN: Daven کی جگہ. اور یہ کر رہا ہے کبھی ایک ہفتے کے بعد سے. کیا GetString کی واقعی ہے واپس لوٹنے کے ایک تار، SE فی نہیں ہے. اس چھوٹی سی سفید جھوٹ میں سے ایک ہے. اس کا پتہ واپس آ گیا ہے یاد میں سٹرنگ، منفرد پتہ. Daven 33 آکسفورڈ سٹریٹ میں رہتا ہے. لیکن زیادہ succinctly، گیون رہتا 0x1 میں، نمبر ایک ایڈریس. تو کیا اس میں ڈال دیا جاتا ہے چھوٹے باکس کے بعد،، واضح ہو کہ سٹرنگ کا پتہ ہے. تو اس وقت، اس ہے چل رہا. لیکن اس میں اشارہ کیا اب اگر یہ ہے کہ اس کے اندر ایک بڑی تعداد، کون ہے آپ کو روکنے کے لئے، پروگرامر، میں کسی نمبر ڈالنے سے کسی بھی متغیر اور صرف کود میموری کے اس حصہ کے لئے؟ اور یقینا، ہم دیکھیں گے کہ خطرہ اگلا وقت ہے. لیکن اب کے لئے، یہ ناکافی محسوس ہوتا ہے. اگر میں کہوں، مجھے ایک حاصل سٹرنگ، آپ مجھے Daven دے. لیکن اگر آپ واقعی میرے Daven نہیں دیتے. آپ مجھے دے تمام Daven کا پتہ ہے. میں تو اس بات کا یقین کے لئے جانتے ہیں کس طرح جہاں Daven شروع ہوتا ہے اور ends-- کہانی weird-- رہی Daven شروع ہوتا ہے اور کہاں ختم ہوتی ہے، اور، پھر اگلے یاد میں سٹرنگ شروع ہوتا ہے؟ ویسے، آپ کو حوالے کر رہے ہیں مجھے Daven کے آغاز، بنیادی طور پر، کس طرح جانتے ہیں اس کے نام کے آخر کہاں ہے؟ اس خصوصی شہوت انگیز null کردار، جس سب سے زیادہ اہم ہے نیچے ڈور تو ڈاکو صرف نشاندہی کر رہے ہیں منفرد کی یاد میں ان کی جگہ کی طرف سے. تو اس وقت، کہ ہے کیا چل رہا ہے. تو اب ہم پر نظر آتے ہیں یہاں کوڈ، کی وضاحت آپ 26 سطر میں بگ گے تو. کیوں کیا Zamyla اور کیا Zamyla مختلف ہے؟ کیوں Gabe اور Gabe کی مختلف ہے؟ جی ہاں، میں واپس. سامعین: انہوں نے مختلف پتے. DAVID J. MALAN: بس کیونکہ وہ مختلف پتے. آپ GetString فون کیونکہ جب پھر، میں یہاں فوری طور پر کریں گے جس میں، اس دوسری لائن، تار ہے تو T، میں نے اس پروگرام میں کیا تھا کے طور پر، GetString کے لئے ایک اور کال کے برابر ہے. میں فون اگلی بار GetString کے، میں جا رہا ہوں میموری کا ایک مختلف حصہ حاصل کرنے کے لئے. GetString کی اجازت ہے آپریٹنگ پوچھنا زیادہ سے زیادہ میموری کے لئے نظام. یہ وہی دوبارہ استعمال کرنے کے لئے نہیں جا رہا ہے چھ بائٹس ہر ایک وقت. یہ ایک نئے حاصل کرنے کے لئے جا رہا ہے میموری کا حصہ، جس ٹی حاصل کرنے کے لئے کی جا رہی ہے کا مطلب ہے کہ یہاں کچھ دوسرے قدر. تو جب مجھے کیا S = برابر T، آپ کا موازنہ نہیں کر رہے ہیں یہ اور ایک خلاف D اس کے اور اس کے خلاف وی. آپ اس کا موازنہ کر رہے ہیں ، جس میں اس کے خلاف واضح طور سے خوبصورت useful-- useless-- ہے ، بہت بیکار ہے واقعی جو وجہ ڈور میموری میں ہیں جہاں پرواہ ہے؟ اور یقینا، ہم نہیں ہے. اور ہم نہیں جا رہے ہیں خاص طور پر دیکھ بھال شروع. صرف کیڑے پیدا کر سکتے ہیں اس حد تک کہ اور سلامتی کے خطرات مرضی پیدا کر سکتے ہیں ہم اصل میں اس کے بارے میں پرواہ کرنے کے لئے شروع. تو اس مسئلہ کو حل کریں. آپ کو سپر بس اس کو ٹھیک، باہر کر دیتا ہے. اور میں نے پہلے، اصل میں چلو پھر پتہ چلتا ہے کہ، کیا کرے گا ایک CS50 کی کلاس میں ہیں تو آپ کو، ایسا اور آپ کو لاگو کرنے کے لئے تھا دو ڈور کے خلاف ایک کے مقابلے. آپ واضح طور پر صرف S = T برابر استعمال نہیں کر سکتے. لیکن صرف منطقی طور پر، کس طرح آپ اس سٹرنگ کا موازنہ کریں گے C کوڈ کا استعمال کرتے ہوئے اس جملے کے خلاف؟ جی ہاں. سامعین: صرف کرتے لوپ کے لئے [اشراوی] DAVID J. MALAN: کامل. سامعین: [اشراوی] DAVID J. MALAN: جی ہاں. صرف لوپ یا ایک کے لئے ایک کا استعمال کرتے ہیں لوپ یا جو کچھ بھی ہے. لیکن بنیادی خیال کا اطلاق ہوتا ہے کہ اس میموری یا ایک سرنی کے ایک حصہ ہے اور یہ ہے، پر iterate دونوں ایک ہی وقت میں. اور صرف حروف کا آپس میں موازنہ. اور تم بھی ایک ہو جائے کرنے کے لئے ہے تھوڑا محتاط، آپ کی وجہ سے ایک انگلی نہیں چاہتے دیگر ماضی جانے کے لئے ایک تار ہے دوسرے سے زیادہ. تو آپ کے لئے چیک کرنے کے لئے چاہتے ہیں کے لئے جا رہے ہیں آخر میں اس خصوصی قیمت، شہوت انگیز null. لیکن یہ واقعی میں، ہے آخر، اس کے طور پر کے طور پر آسان. اور واضح طور سے، ہم نے کی ضرورت نہیں کہ وہیل reinvent کرنے کے لئے. یہاں دو ورژن ہے. اور کیا میں یہاں کہنے جا رہا ہوں یہ ہے کہ بجائے کے موازنہ کے، = T برابر اگر سٹرنگ میں بجائے، کہنے جا رہا ہوں کی کوما ٹی کے مقابلے = 0 کے برابر ہے. اب، تار آپس میں موازنہ کیا جاتا ہے؟ یہ ایک تقریب ہے، پتہ چلا ہے کہ جس کا مقصد زندگی میں C، کے ساتھ آتا ہے دو ڈور کا موازنہ کرنے ہے. ہم پڑھتے ہیں اور اگر موازنہ ہلچل اس مرد صفحہ یا دستاویزات یا CS50 حوالہ، یہ بس آپ کو اس ہلچل بتا ایک منفی یا تو واپسی کا موازنہ نمبر یا ایک مثبت عدد یا صفر، صفر کا مطلب ہے جہاں وہ برابر ہیں. تو صرف اٹکل. یہ کیا ہے تو مطلب ہو سکتا ہے موازنہ کی واپسی ہلچل منفی قدر یا مثبت قیمت؟ سامعین: سے زیادہ یا کم سے کم. DAVID J. MALAN: جی ہاں، یا اس سے زیادہ کے مقابلے میں کم. تو آپ کو ایک مکمل حل کرنا چاہتا تھا ایک dictionary-- میں تاروں کی گچرچھا ہم آخر road-- نیچے کے طور پر کامل تقریب ممکنہ طور پر استعمال کرنے کے لئے، یہ ہے کہ کیا جا رہا ہے کیونکہ آپ کے لئے ڈور کا موازنہ، اور بتا آپ کو ایک ب سے پہلے آتا ہے، یا کرتا ہے B ایک حروف تہجی سے پہلے آئے. ہم بالکل ایسا کر سکتے ہیں. اور میں ایک دوسرے کیا نوٹس اس مثال میں بات. اور کیا اس سے زیادہ تبدیل کر دیا گیا اس کی اہم تقریب میں؟ چار *. اور یہ کہ دوسرے سفید جھوٹ ہے. اس وقت، جب آپ نے سٹرنگ لکھ رہا، ہم چپکے سے دوبارہ لکھ دیا گیا ہے چار کے طور پر سٹرنگ * تو اصل میں ہے کہ بجنا آپ سمجھتے ہیں. دوسرے الفاظ میں، cs50.h، میں میں اور ہم آخر میں دیکھیں گے کے طور پر، ہم ایک متبادل کہا جاتا سٹرنگ بنا اس چار * کے طور پر ایک ہی بات ہے. اور اب کے لئے، صرف معلوم ہے کہ *، اس تناظر میں، کم از کم، ایڈریس کا مطلب ہے. کیا پتہ؟ ویسے، حقیقت یہ ہے کہ میں نے کہا کہ چار *، اور، * int یا فلوٹ نہیں * چار * کا مطلب ہے کہ ایک چار کا پتہ. تو یہاں اس چھوٹے باکس، ارف سٹرنگ، واقعی قسم چار * کی ہے، جس کہہ صرف پسند ہیں طریقہ ہے، اس خانے میں ایک ایڈریس جائیں گے. اور کیا ہے کہ ایڈریس کے رجوع کرتا ہے؟ ظاہر ہے، ایک چار. لیکن ہم بالکل کر سکتے ہیں INT * اور دیگر چیزیں ہیں. لیکن اب کے لئے، چار * واقعی سب سے زیادہ ہے براہ راست اور دلچسپی میں سے ایک. تو اس مسئلہ کی جا رہی ہے پھر، اگرچہ، اضافہ کرنے کے لئے. میں اس پروگرام کو کھولنے کے فرض. اب ہم پیشن گوئی کر سکتے ہیں تو چلو دیکھتے ہیں کیا اس کوڈ سے غلط ہے. تو اس پروگرام میں، کاپی 0، میں ہوں آگے بڑھو اور پھر فون کرنے جا رہا GetString اور کی میں قدر ذخیرہ. اور پھر، میں کیوں، یہ کر رہا ہوں صرف ہفتے ماضی سے ایک یاد دہانی کے طور پر؟ ہم کہ GetString کا کہنا ہے کہ کیا ہے کبھی کبھی شہوت انگیز null واپس. یہ کیا ہے تو کیا مطلب ہے GetString کی شہوت انگیز null واپس؟ کچھ غلط ہو گیا. شاید یہ تار بھی ہے کا مطلب ہے کہ بڑا، میموری کے کمپیوٹر کے باہر. یہ سپر، سپر، سپر ہوتا ہے شاذ و نادر ہی، لیکن یہ ہو سکتا ہے. ہم اس کے لئے چیک کرنے کے لئے چاہتے ہیں، اور یہ کہ ہم سب کر رہے ہیں ہے. آپ ایسا نہیں کرتے ہیں تو ہم، اب دیکھیں گے کیونکہ چیزوں کے لئے عادت کی جانچ پڑتال شروع شہوت انگیز null کی طرح، آپ کو ہو سکتا ہے اصل میں جانے کے لئے شروع یاد میں پتوں پر غلط ہیں. اور تم inducing کے شروع کرنے کے لئے جا رہے ہیں زیادہ سے زیادہ انقطاع گناہ. یا ایک میک یا PC، صرف ایک کمپیوٹر کی وجہ سے پھانسی یا ایک پروگرام ممکنہ طور پر، منجمد کرنے کے لئے. تو اب، میں، کاپی 0.c میں دعوی میں اس راہ کی طرف سے ان ڈور کاپی کرنے کے لئے جا رہا ہوں 28 لائن. اور پھر، میں جا رہا ہوں نچلے حصے میں دعوی کرنے کے لئے یہاں میں جا رہا ہوں ان میں سے ایک کو تبدیل کرنے کی. تو یہ محسوس. میں نے اپنے پرانے دوست strlen بلا رہا ہوں. اور صرف انگریزی میں وضاحت اس لائن 34 کیا کر رہی ہے؟ کیا ٹی 0 بریکٹ کرتا ہے بائیں پر نمائندگی. جی ہاں. سامعین: T کے پہلے کردار؟ DAVID J. MALAN: T کے پہلے کردار. کہ یہ ہے. T کے پہلے کردار، میں چاہتا ہوں بڑے ورژن تفویض کرنے کے لئے ٹی میں پہلی کردار کی. تو یہ فائدہ ہے پہلا خط. اور پھر، بہت آخری چیز جو میں کرنا اس پروگرام میں ہے میں یہاں کے دعوے اصل، ہے، اور یہاں کاپی، ٹی. لیکن اس کی کہانی کی بنیاد پر ہم صرف ، ڈور واقعی ہیں کے بارے میں بتایا واقعی لائن 28 ہے کر، اور کیا ہے جا کے نتیجے میں بگ سکرین پر ہو؟ تو سب سے پہلے، سب سے پہلے سوال، 28. سٹرنگ T = کی واقعی کیا کر رہا ہے؟ ہم بائیں ہاتھ پر ہے تو یہاں طرف سٹرنگ T = ے؛ کہ مجھے ایک باکس دیتا ہے یہاں اور ایک باکس یہاں. اور، اس ایڈریس 0x کے ہے لگتا ہے چلو منمانے، اس وقت، کا کہنا ہے کہ 50 دو. کیا سٹرنگ T = کی کرتا ہے ہڈ کے نیچے ہیں؟ سامعین: [اشراوی] DAVID J. MALAN: یہ میموری اسٹورز وہاں سے نمٹنے کے، تو 0x50 وہاں جاتا ہے. اب تو، میں سب سے پہلے کرنے کے لئے جانا T میں کردار اور اس کے بڑے، میں مؤثر طریقے سے کے لئے کیا کر رہا ہوں؟ میں واقعی میں حق، ایک ہی بات کر رہا ہوں؟ کیونکہ اگر ایڈریس 0x50-- اور صرف، میں یہاں بورڈ پر زیادہ کمرے نہیں ہے، لیکن، اس کے یہاں 0x50 ہے کہ فرض اپنے کمپیوٹر کی میموری میں کہیں. اور میں، مثال کے طور پر، کے بغیر ہے اس طرح، یہاں چھوٹے. اور میں نے کہا کہ ٹی بریکٹ 0 بڑا ہو جاتا ہے. ویسے، T بریکٹ 0 ہے T میں پہلا حرف. تو تھوڑا جی جا رہا ہے بن بڑی جی لیکن مسئلہ ، کیا بھی کی طرف اشارہ ہے کرتا ہے؟ سامعین: ہی. DAVID J. MALAN: ایک ہی عین مطابق بات. تو شاید ایک سادہ وضاحت، نحو ایک چھوٹا سا عجیب ہے یہاں تک کہ اگر. تو ایسا کرنے دو. ./copy 0 پھر کاپی 0 بنائیں اور. کچھ تو کہو: Gabe کی. اور بدقسمتی سے، دونوں انہیں اب بڑا کیا گیا ہے، لیکن اس کے لئے بنیادی ہم صرف ہو اس کی وجہ سے اب پتے کے ساتھ نمٹنے کے. تو ہم کس طرح شروع کرنے کے لئے ہے ایڈریس کوئی شلیش intended-- ہم سے نمٹنے کے لئے شروع کرتے ہیں کس طرح یہ خاص طور پر مسئلہ ہے؟ ویسے، copy1.c میں، چیزوں کو جا رہے ہیں ایک چھوٹا سا زیادہ پیچیدہ حاصل کرنے کے لئے. لیکن میں نے ایک دعوی کرے گا تصوراتی آسان حل. پہلی نظر میں حاصل کرنے کے لئے مشکل. سب سے پہلے کے لئے آسان نہیں جا رہا وقت آپ، شاید، اس سے ٹائپ لیکن مسئلہ یہ ہے کہ اگر بس T = صرف کر نقول پتہ، کیا، پھر میں تم پر منتخب کر سکتے ہیں تو، حل ہونے جا رہا ہے اصل میں ایک تار کاپی کرنے کے لئے؟ سامعین: ہم شاید گے پھر ایک لوپ استعمال. DAVID J. MALAN: جی ہاں. تو ہم پھر ایک لوپ کی ضرورت کے لئے جا رہے ہیں. اور ہم کاپی کرنا چاہتے ہیں کیونکہ اگر ایک سٹرنگ میں ایک سٹرنگ، ہم شاید ایسا کرنے کے لئے چاہتے ہیں کردار سے کردار. لیکن مسئلہ یہ ہے، تو ہے اس، اصل میں کی ہے اب ہم واضح طور پر شروع کرنے کی ضرورت T کے لئے میموری مختص. دوسرے الفاظ میں، چلو یہ ایک آخری بار redraw. اس کے سٹرنگ = GetString ہے. اور کے طور پر اچھی طرح سے، یہاں یہ ڈال دو. اس GetString ہے. کچھ کے لئے اور اس کے بعد، تصویر اس طرح کے طور پر اس سے پہلے ہونے جا رہا ہے، جی ایک بی ای / 0. کہ اس طرح کچھ لگتا. اور کی وجہ سے، ہم اس 0x50 فون اور یہ کہ 51، 52 جا رہا ہے. تو اس 0x50 ہے. اور پھر، میں سٹرنگ ٹی کرتے. یاد میں، یہ صرف جا رہا ہے مجھے اس طرح ایک چھوٹا سا مربع دے. تو اہم قدم اب کیا ہے؟ میں T میں کی کاپی کرنے کے لئے چاہتے ہیں، تو کیا خالی ہم یہاں میں بھرنے کے لئے کی ضرورت ہے؟ یا ہم کرنے کی ضرورت ہے ایک اعلی سطح پر ہے؟ جی ہاں؟ کوئی؟ جی ہاں. سامعین: ہم [اشراوی] کرنے کی ضرورت ہے. DAVID J. MALAN: جی ہاں، ہم اس خالی میں بھرنے کے لئے کی ضرورت ہے. میں نے تو کاپی اور نہیں کر سکتے ہیں Gabe کی کا نام فائدہ میں آپریٹنگ سسٹم سے پوچھنا جب تک میموری کا ایک حصہ کے لئے کہ اصل کے طور پر کم از کم کے طور پر بڑا ہے. تو ہے کہ ایک سوال کے ساتھ ہمیں چھوڑ دیتا ہے. میں آپریٹنگ سسٹم نہیں پوچھنا کیسے صرف ایک سادہ سی پوائنٹر کے لئے یہ کہا جاتا ہے کے طور پر، ایک پتہ، ایک پوائنٹر نہیں ایک سادہ سی کے باکس کے لئے اس طرح ایک تار بلایا؟ میں کس طرح آپریٹنگ پوچھ رہے ہو میموری کا ایک بڑا حصہ کے لئے نظام؟ اس طرح اب تک، میں صرف واپس ہو گیا ہے بالواسطہ طور پر GetString بلا کی طرف سے. تو کس طرح GetString ہے اس کی میموری حاصل کرنے سے بھی؟ ٹھیک ہے، یہ ہے کہ باہر کر دیتا ہے یہ دوسری تقریب کہ اب ہم استعمال کرنے کے لئے شروع کریں گے. اب، اس طرح زیادہ خفیہ than-- لگتا ہے اور ہوں اس کو دیکھ سکتے ہیں جو صرف ایک ہی ہوں اس لائن طریقہ زیادہ خفیہ لگ رہا ہے تو یہ پہلی نظر میں ہونا چاہئے. لیکن اس کے علاوہ چڑھاو ہیں. بائیں ہاتھ پر، میں چار * T ہے. انگریزی میں تو، تیار کرنے کے لئے شروع کرتے ہیں تکنیکی شبدجال میں مناسب سزائیں. تو اس مختص ہے قسم چار متغیر T بلایا *. اب، کیا یہ واقعی مطلب ہے؟ ویسے، کا مطلب ہے کہ، میں کیا جا رہا ہوں T نامی اس متغیر میں ڈال دیا؟ ایک حروف کے ایک پتے. تو ہے کہ، صرف آسان ہے زیادہ مناسب طریقہ کے بائیں ہاتھ کی طرف بیان. تو ہے کہ یہاں صرف اس باکس تخلیق کرتا ہے. تو دائیں ہاتھ کی طرف، شاید، جا رہا ہے بڑی کہ مختص کرنے کی میموری کے لئے کس طرح حصہ؟ تو اس کے علاوہ چڑھاو ہیں. یہ پہلی نظر میں بھاری ہے لیکن اندر یہاں کیا ہو رہا ہے؟ سب سے پہلے، کی malloc، وہاں جس ہمارے نئے دوست، بظاہر ہے "میموری مختص." تو یہ منظور کیا جا رہا دلیل ہے اس میں، تو یہ ایک بہت بڑی دلیل ہے. تو اس کے علاوہ چڑھاو ہیں. کے کی strlen، کورس کی، کی نمائندگی کرتا ہے the-- سامعین: حروف کی تعداد. DAVID J. MALAN: بس ایس حروف کی تعداد. تو کے کی لمبائی، اصل سٹرنگ. تو جی ایک بی ای. تو یہ شاید چار اس صورت میں ہے. کیوں میں نے بعد +1 کر رہا ہوں کے کی strlen بلا؟ سامعین: [اشراوی] DAVID J. MALAN: اس کے لئے خصوصی شہوت انگیز null کردار. آپ مجھ سے پوچھیں تو کی لمبائی کیا ہے Gabe کی کے نام، میں چار کا کہنا ہے کہ جا رہا ہوں. ہڈ کے نیچے، اگرچہ، مجھے اس کی ضرورت شہوت انگیز null کردار کے لئے کہ پانچویں بائٹ. میں +1 کر رہا ہوں یہی وجہ ہے کہ. اب صرف اس صورت میں آپ کو اس چل رہے ہیں کے علاوہ کسی اور کمپیوٹر پر پروگرام،، کا کہنا ہے کہ CS50 آلات، جہاں ایک چار کا سائز مختلف ہو سکتا ہے میرے اپنے کمپیوٹر سے میں نے اس کو فون کر سکتے ہیں پتہ چلا ہے کہ آپریٹر کو sizeof، صرف، کمپیوٹر سے پوچھنا ایک کا سائز کیا ہے اس کمپیوٹر پر چار؟ اور اس میں پانچ ضرب کی طرف سے چار کا سائز، کی طرف سے مثال کے طور پر، جس میں سب سے زیادہ کمپیوٹر پر کرے گا صرف ایک، malloc کے ہو مجھے اس بڑے کے لئے مختص کی جا رہی ہے یہاں پر زیادہ میموری کا حصہ. اور اس کو واپس جا رہا ہے یہ ہے تو یہ ایک تقریب ہے کیا مجھ سے واپس جا رہا؟ سامعین: پتہ؟ DAVID J. MALAN: کیا پتہ؟ سامعین: میموری کی اس رقم مختص کی؟ DAVID J. MALAN: کی یاد داشت اس مختص. تو میں، واضح طور سے، کوئی اندازہ نہیں ہے جہاں یہ ختم کرنے کے لئے کی جا رہی ہے. میں تجویز ہے کہ جا رہا ہوں اس 0x88 پر ختم کرنے کے لئے جا رہا ہے. مکمل طور پر صوابدیدی، لیکن 0x50 سے دوسرے کہیں، آپریٹنگ سسٹم کی وجہ سے، کیا ونڈوز اور میک OS میرے لئے کیا ہے، یہ دے رہا ہے کہ بات کو یقینی بنانا مجھے RAM کے مختلف حصوں. تو اس کی قیمت یہ ہے جہاں میموری کا حصہ ختم ہو سکتا ہے. تو اس 0x88، یہاں میں ختم ہو جاتی ہے. تو اب واضح طور پر، میں سمجھ سکتے ہیں یہ اس کے طور پر ہی نہیں ہے کہ، وہ کی طرف اشارہ کر رہے ہیں کیونکہ میموری کے مختلف حصوں. اب میں اصل میں اس کو کاپی کرنا چاہتے ہیں تو میں، آپ کی مجوزہ حل کرتے ہیں. ، صرف، جانے کے لوپ کے لئے ایک کی تخلیق کرتے ہیں اور ٹی بریکٹ مجھے کی بریکٹ میں ہو جاتا ہے. اب میں استعمال کر سکتے ہیں کیونکہ اس صف کی طرح علامت، کیونکہ اگرچہ malloc کی بہت عام مجھ میموری مختص، میموری صرف ملحق بائٹس ہے. بائٹ، بائٹ، بائٹ، واپس واپس کرنے کے لئے واپس کرنے کے لئے. میں ایک پروگرامر کے طور پر ضرور کر سکتے ہیں ایک سرنی، کے طور پر اس کا علاج جس میں اس کے آخر میں واقف استعمال کر سکتے ہیں کا مطلب ہے کہ کچھ مربع بریکٹ سنکیتن کے. تو مجھے، کیونکہ وہاں روک دو یہ بھی، تمام ایک بار میں ایک بہت کچھ ہے بنیادی خیال recap کرنے کے لئے اگرچہ کہ سٹرنگ ہے، اس وقت، ایک نئے اعداد و شمار کی قسم SE فی نہیں ہے. یہ صرف ایک نام نہاد پوائنٹر ہے ایک کردار کا پتہ، جس میں صرف کا مطلب ہے کہ یہ ایک بڑی تعداد ہے انسانی کنونشن کی طرف سے ہم 0x کے کچھ کے طور پر لکھنے کے لئے ہوتے ہیں. لیکن یہ صرف ایک نمبر ہے 33 آکسفورڈ سٹریٹ کی طرح، جس پر ہوتا ہے CS عمارت کا پتہ. ان تفصیلات پر کوئی سوال؟ جی ہاں؟ سامعین: ہم کیوں چیک کریں برابر T کے لئے شہوت انگیز null؟ DAVID J. MALAN: ہم کیوں کرتے شہوت انگیز null برابر T کے لئے چیک کریں؟ ہم documentation-- پڑھتے ہیں malloc کے لئے بہت اچھا سوال، یہ ٹھیک پرنٹ میں کہا جا رہا ہے کبھی کبھی malloc کی، شہوت انگیز null واپس کر سکتے ہیں صرف GetString طرح. اور یقینا، GetString کی شہوت انگیز null واپس ، کے نتیجے میں، malloc نل واپس، GetString کے malloc کا استعمال کرتا ہے کیونکہ. OS تو ہے کہ، ہو سکتا ہے میک OS، ونڈوز، جو کچھ بھی، صرف آپ کے لئے میموری سے باہر. تو ہے کہ وہاں کیا ہوا ہے. اور مجھے ایک اور چیز کو ظاہر کرتے ہیں یہ صرف آپ کے دماغ اڑا سکتا ہے یا مکمل طور پر بہت دور لائن ختم ہو جائے. لیکن مجھے ھیںچو کاپی کے لئے لوپ کے لئے ایک ہی، جس میں ایک لمحے پہلے، یاد تھا اس. T بریکٹ میں بریکٹ میں ہو جاتا ہے. اچھا اور صارف دوستانہ. پھر ہفتہ قبل دو طرح لگتا ہے. لیکن اس ورژن اصل میں ہو سکتا ہے خفیہ لگ رہا ہے جس میں اس کے طور پر دوبارہ. یہ ایک ٹیکنالوجی کہا جاتا پوائنٹر ہے ریاضی، ایڈریس ریاضی. لیکن کیوں کام کرتا ہے؟ اب سے annoyingly، C کے مصنفین کے استعمال کرنے کا فیصلہ مختلف مقاصد کے لئے * علامت. ہم، یہ پہلے سے ہی ایک بار استعمال کیا دیکھا ہے جس کا مطلب ہے چار *، "مجھے ایک متغیر دے اس پر مشتمل جا رہا ہے ایک چار کا پتہ. " اس تناظر میں تو چار * "مجھے ایک متغیر دے." کا مطلب بدقسمتی سے، آپ * کے بغیر استعمال کرتے ہیں تو اس کے سامنے ایک لفظ، چار کی طرح، اب یہ کہا جاتا ہے dereference آپریٹر. اور ہم نے بہت پہلے اس سے زیادہ نظر آئے گا. لیکن یہ صرف "وہاں جاؤ." کا مطلب کسی نے مجھے حوالے تو یہ، کہہ طرح ہے کاغذ کا ایک ٹکڑا پر "33 آکسفورڈ سٹریٹ،" میں نے کہا "* 33 آکسفورڈ سٹریٹ،" ایسا کرتے ہیں کا مطلب ہے کہ "CS عمارت کے راستے پر جانا." تو * صرف وہاں ہے تو جانے کا مطلب اس کے سامنے کوئی لفظ نہیں ہے. تو واضح ہو، ٹی کیا ہے؟ ٹی کے حصہ کا پتہ ہے میرے پاس واپس دیا گیا تھا کہ میموری. کی، واضح ہو کیا، کا پتہ ہے مثال میں ہم بحث کر دیا گیا ہے، چھوٹے Gabe کی ہے؟ پتہ ہے of-- سامعین: سٹرنگ. DAVID J. MALAN: Gabe کی اصل نام کے. تو اس کا پتہ ہے میموری کے اس حصہ. تو میں نے کا کہنا ہے کہ T + میں ... میں، نوٹس، صرف ہمارے پرانے دوست ہے. یہ صرف ایک انڈیکس متغیر ہے کہ اپ پر صفر سے iterating ہے سٹرنگ کی لمبائی. تو یہ، اس کے بعد صفر، ایک ہونے جا رہا ہے پھر دو، پھر تین، چار. تو ان نئے جمع سکریچ کی طرح پہیلی کے ٹکڑے ٹکڑے، اگر آپ، اگرچہ، ایک بار پھر، نحو سکریچ سے کہیں زیادہ arcane ہے. تو T ایک ایڈریس + ہے مجھے دینے جا رہا ہے ایک بڑی تعداد، ان کی وجہ سے ہیں ہم ہیکس کے طور پر ڈرائنگ ہے کہ تعداد. لیکن وہ صرف تعداد ہیں. T کا پتہ ہم نے تو تھا 0x88، 0x88 کے علاوہ صفر ہے. آپ کو آرام دہ نہیں ہیں یہاں تک کہ اگر ابھی ہیکس کے ساتھ، ایک اندازہ. سامعین: اصل. DAVID J. MALAN: 0x88 پھر بھی. تو * کیا مطلب 0x88 ہے؟ یہ جس کا مطلب ہے "وہاں جانا"، کا مطلب ہے کہ مؤثر طریقے سے، "اپنی انگلی ڈال یہاں." اور اب کے دائیں ہاتھ کی طرف پر اس اظہار، * اور اس کے بعد والدین میں، کے میں ہے جس میں، اس کا مطلب + یہاں چھوٹی سی جی کے حل. کی + 0، کورس کی، ہے جو کچھ بھی کی، ہے. تو اب، اس کے *، ہے جس میں صرف * 33 کی طرح آکسفورڈ سٹریٹ ایڈریس پر جانے کا مطلب ہے کہ کی. تو یہاں اس کی انگلی، دائیں ہاتھ ہے. تو کیا میں کیا میں کاپی کرنے کے لئے جا رہا ہوں؟ ہے جو حق پر بات، Gabe کی، یہاں میں یہاں تھوڑا G،. اس کے اور اس کا اثر لوپ کے پہلے iteration، آپ کو یہ لگتا ہے، اگرچہ، کے طور پر تجویز پیش کی کسی بھی چیز سے پاگل زیادہ پیچیدہ ہم پہلے دیکھا ہے صرف کہہ رہا ہے یہاں جانا اور یہاں کہ کردار کی نقل. یہ آپ دونوں مقامات پر ایک نقشہ دے رہی ہے. اور ہم نے اس کے کہیں زیادہ نظر آئے گا. لیکن اب کے لئے، امید ہے ان بنیادی نظریات میں سے کچھ کو متعارف کرانے. اور یقینا، دیکھو یہاں ایک حتمی پروگرام، اور اس کے بعد وعدہ کیا claymation، جس میں سب کچھ ٹھیک کر دے گا. ٹھیک ہے. تو مجھے ہم وہاں چلتے up-- کھولنے. ہم واپس آ جائیں گے me-- تو دو طویل عرصے سے پہلے اس تصویر میں. مجھے یہاں یہ آخری مثال کے طور پر کھول دو. تو یہاں ایک سپر، سپر ہے کو accomplishes اس پروگرام درج ذیل کرتا ہے کہ زندگی میں کچھ بھی نہیں. یہ سب سے پہلے دو متغیر، X اعلان اور اس وقت تعداد میں نہیں ہیں کہ Y،، SE فی. وہ SE فی، integers کے نہیں ہیں. انہوں * بظاہر ہیں int کی. تو کسی کو بھی، اس کا کیا مطلب ہے آپ کے ڈیٹا کی قسم ہے تو، آپ متغیر، قسم int * سٹار کی ہے؟ یہ ایک int کا پتہ ہے. تو میں نے یہ ابھی تک ہے جہاں کوئی اندازہ نہیں ہے. یہ صرف "، آخر میں، ڈال کا مطلب یہاں ایک int کا پتہ. " اس میں ہے جہاں کہیں بھی 0x50، 0x88، میموری، ایک ایڈریس سے کی جا رہی ہے. اور اس Y کیا ہے اس کے ساتھ ساتھ، ہو جا. میں اب کہتے ہیں X = malloc کے (آپ sizeof (int))، یہ کہنے کی پسند ہیں طریقہ ہے، ارے آپریٹنگ سسٹم، malloc کے ذریعے، سائز کے لئے مجھے کافی میموری دے شاید ہے جو ایک int، کا 32 بٹیں یا چار بائٹس کو ہونے جا رہا. تو malloc کیا واپس کرتا ہے؟ malloc کا ایک ایڈریس کی واپسی. تو ایکس میں محفوظ کرنے کے لئے جا رہا ہے؟ کے حصہ کا پتہ میموری، چار بائٹس، کہ malloc کی صرف پوچھ کی طرف سے میرے لئے مل گیا آپریٹنگ سسٹم. اب اس دوران، لائن یہاں چار، * X = 42. بس، واضح ہو وہاں کیا جا رہا ہے؟ بائیں ہاتھ پر، * ایکس. کہ * 33 آکسفورڈ سٹریٹ کی طرح ہے. تو * ایکس مطلب کیا ہے؟ سامعین: کرنے کے لئے جاؤ. DAVID J. MALAN: اس ایڈریس پر جاؤ. جہاں کہیں بھی کے اس حصہ یاد داشت کی اس کے لئے جانا، ہے. اور ظاہر ہے، کیا وہاں ڈال دیا؟ سامعین: 42. DAVID J. MALAN: 42. ٹھیک ہے، * Y، اسی خیال. Y میں ایڈریس. وہاں 13 نمبر ڈال، لیکن اس وقت Y کیا ہے؟ سامعین: کوئی میموری Y کے لئے نہیں ہے. DAVID J. MALAN: نہیں Y کے لئے کوئی میموری ہے. تو کیا شاید Y کرتا ہے ہم کہہ رہے ہیں کے طور پر، پر مشتمل ہے؟ سامعین: ردی کی ٹوکری. DAVID J. MALAN: کچھ ردی کی ٹوکری کی قیمت. اب، ردی کی ٹوکری کی قیمت اب بھی ایک بڑی تعداد ہے. یہ اب بھی ایک ایڈریس کے لئے غلطی پر ہو سکتا ہے. یہ کسی کے طور پر اگرچہ ہے ، نیچے کچھ لکھا اور میں معنی کے طور پر اس کی غلط تشریح گلی میں کچھ عمارت. اور آپ کو صرف میں جانے کی کوشش کی تو آپ کے مالک نہیں ہیں کچھ عمارت، یا میموری کا کچھ حصہ آپ کو نہیں ہے دیا گیا، بری چیزیں ہو سکتا ہے. کمپیوٹر کچھ دوسرے کریش، یا ہو سکتا ہے تعین رویہ ہو سکتا ہے. تو، پھر، Binky پر یہ تعارف ہے. میں اب بھی 20، یاد کچھ عجیب سال کے بعد، جب میں نے آخر میں تھا جہاں اشارہ سمجھا. اگر آپ کا کہنا ہے کہ کے لئے ہے جو تین منٹ میں یہاں چھوڑ اور میں نہیں ہے اشارہ سمجھنے، احساس میں 20 کے لئے یاد ہے کچھ پاگل وجہ سال کب اور کیوں اس کے آخر میں ڈوب میں، میری تعلیم کے ساتھ بیٹھے ساتھی، نشاط مہتا میں ایلیٹ ڈائننگ ہال کے پیچھے. اب، مجھے یاد ہے یہ تھا کیونکہ موضوعات میں، میں سے ایک خاص طور پر، کے ساتھ جدوجہد کی. اور پھر، اس کے آخر پر کلک کیا، جیسے میں موضوعات کی ایک بہت کچھ کہنے کی جرات آخر میں کرے گا. اور اب، کہ تمام محسوس کرنے کے لئے خوشی اور سب سے زیادہ اس بات پر قائل، میں ایک حتمی نظر ڈالیں ہمارے یہاں Binky میں آخری تین منٹ، ہمارے دوست، نک سے سٹینفورڈ سے Parlante. [ویڈیو پلے بیک] -Hey، کرو. اٹھو! یہ پوائنٹر تفریح ​​کے لئے وقت ہے. کہ کیا ہے؟ اشارہ کے بارے میں معلومات حاصل کریں؟ اوہ، واہ! ٹھیک ہے، شروع کرنے کے لئے، میں ہم ہیں لگتا ہے ایک جوڑے اشارہ کی ضرورت کے لئے جا. ٹھیک ہے. اس کوڈ، دو اشارہ مختص جس integers کے کی طرف اشارہ کر سکتے ہیں. ٹھیک ہے. ویسے، میں نے دو اشارہ دیکھتے ہیں، لیکن وہ کچھ کی طرف اشارہ کرنے کے لئے نہیں لگتے. -That ٹھیک ہے. ابتدائی طور پر، اشارہ کچھ بھی نہیں کی طرف اشارہ کرتے ہیں. وہ کہتے ہیں کی طرف اشارہ چیزیں pointees، اور ان کی ترتیب ایک علیحدہ قدم. ٹھیک ہے، ٹھیک، اوہ. مجھے پتہ تھا. pointees الگ ہیں. یر، تو کس طرح آپ کو ایک pointee مختص ہے؟ ٹھیک ہے. ویسے، اس کوڈ کو مختص ایک نئے عددی pointee، اور اس حصے کا تعین کرتا ہے ایکس اس کی طرف اشارہ کرنے کے لئے. -Hey، یہ بہتر لگتا ہے. تو اسے کچھ کرنا. ٹھیک ہے. میں پوائنٹر X dereference گے اس pointee میں 42 نمبر جمع. یہ چال کے لئے، میں نے کی ضرورت ہو گی میری محولہ لقب ضبطی کے جادو کی چھڑی. محولہ لقب ضبطی کے جادو کی چھڑی آپ کا؟ That-- یہ بہت اچھا ہے. -یہ کوڈ کی طرح لگتا ہے. میں نے صرف تعداد، اور POP] قائم کریں گے -Hey، دیکھو. وہاں جاتا ہے. X مندرجہ ذیل پر dereference کر -تو تیر اس pointee تک رسائی حاصل کرنے کے لئے. اس صورت میں، وہاں ایک دکان 42. ارے تعداد میں جمع کرنے کے لئے اس کا استعمال کرتے ہوئے کرنے کی کوشش کریں دوسرے پوائنٹر کے ذریعے 13، Y. ٹھیک ہے. میں صرف Y کے لئے یہاں جائیں گے، اور ان کی تعداد 13 سیٹ حاصل. اور پھر، کے چھڑی لے محولہ لقب ضبطی اور صرف [BUZZ] اوہ! ارے، اوہ! یہ کام نہیں کیا. کرو، میں محولہ لقب ضبطی نہیں لگتا ہے، کا کہنا ہے کہ آپ کو پتہ ہے کیونکہ Y،، ایک اچھا خیال ہے pointee قائم ایک علیحدہ قدم ہے. اور میں ہم نے کبھی یہ کیا نہیں لگتا. اچھا نقطہ. جی ہاں. ہم پوائنٹر Y مختص، لیکن ہم کبھی ایک pointee کی طرف اشارہ کرنے کے لئے مقرر. -بہت مشاہدہ. -Hey، آپ، وہاں کرو اچھے لگ رہے ہو. آپ تاکہ اسے ٹھیک کر سکتے Y پوائنٹس ایکس کے طور پر ایک ہی pointee؟ ضرور. میں اپنے جادو کی چھڑی کا استعمال کریں گے پوائنٹر تفویض کی. جا رہا ہے کہ -is پہلے کی طرح ایک مسئلہ ہے؟ کوئی. یہ pointees چھو نہیں ہے. یہ صرف ایک پوائنٹر تبدیل دوسرے کے طور پر ایک ہی بات کی طرف اشارہ ہے. اوہ، میں دیکھ رہا ہوں. ایکس کے طور پر ایک ہی جگہ پر Y پوائنٹس. تو انتظار. اب، Y طے ہو گئی ہے. یہ ایک pointee ہے. تو آپ کی چھڑی کرنے کی کوشش کر سکتے ہیں 13 دوبارہ بھیجنے کی محولہ لقب ضبطی. ٹھیک ہے، -Uh. یہ یہاں جاتا ہے. [POP] -Hey، اس کو دیکھو. اب Y پر کام محولہ لقب ضبطی. اور اشارہ اشتراک کر رہے ہیں ایک pointee ہے کہ، وہ دونوں 13 دیکھیں. جی ہاں. اشتراک، جو کچھ بھی. تو کیا اب ہم مقامات پر تبدیل کرنے جا رہے ہیں؟ اوہ، دیکھو. ہم وقت سے باہر ہیں. -But-- تین پوائنٹر قوانین یاد ہے بس. نمبر ایک، بنیادی ڈھانچے آپ کو ایک پوائنٹر ہے، اور یہ ایک pointee کی طرف اشارہ. لیکن پوائنٹر اور pointee ہے، الگ الگ ہیں اور عام غلطی پوائنٹر قائم کرنے کے لئے ہے، لیکن یہ ایک pointee دینے کو بھولنا. نمبر دو، پوائنٹر محولہ لقب ضبطی پوائنٹر شروع ہوتا ہے اور اس سے زیادہ اس کا تیر مندرجہ ذیل اس pointee تک رسائی حاصل کرنے کے لئے. ہم سب جانتے ہیں، اس ہے تو صرف کام کرتا ہے ایک pointee، جس قسم کی نمبر ایک قاعدہ پر واپس ہو جاتا ہے. تین نمبر، پوائنٹر تفویض ایک پوائنٹر لیتا ہے اور کی طرف اشارہ کرنے کے لئے اسے تبدیل دوسرے پوائنٹر کے طور پر ایک ہی pointee. تفویض کے بعد، دو اشارہ اسی pointee کی طرف اشارہ کریں گے. کبھی کبھی، کہ اشتراک کہا جاتا ہے. اور یہ کہ واقعی، اس کے لئے ہے ہے. الوداع اب. [END ویڈیو پلے بیک] DAVID J. MALAN: یہ CS50 کے لئے ہے. ہم اگلے ہفتے آپ دیکھیں گے.