1 00:00:00,000 --> 00:00:02,395 >> [موسیقی بجانے] 2 00:00:02,395 --> 00:00:05,750 3 00:00:05,750 --> 00:00:06,506 >> ڈوگ لایڈ: ٹھیک ہے. 4 00:00:06,506 --> 00:00:08,880 ہم integers کے ساتھ کام کیا ہے، ہم کرداروں کے ساتھ کام کیا ہے، 5 00:00:08,880 --> 00:00:11,930 ہم floats کام کیا ہے، ڈبلز، ڈور، اور bools. 6 00:00:11,930 --> 00:00:14,870 ہم زیادہ سے زیادہ تمام خوبصورت ختم ہو گئے ہیں [اشراوی] کی اقسام میں سے ہے کہ 7 00:00:14,870 --> 00:00:17,100 ساتھ ہم سب کے لئے دستیاب کر دیا گیا ہے. 8 00:00:17,100 --> 00:00:19,430 لیکن اب ہم زیادہ کچھ کرنا چاہتا ہوں. 9 00:00:19,430 --> 00:00:20,210 ہم اس کس طرح کروں؟ 10 00:00:20,210 --> 00:00:22,560 ہم کس طرح مختلف اعداد و شمار اقسام تخلیق کروں؟ 11 00:00:22,560 --> 00:00:26,130 ہم ڈھانچے کا استعمال کرتے ہوئے ایسا کر سکتے ہیں. 12 00:00:26,130 --> 00:00:30,180 لہذا ڈھانچے ہمیں متحد کرنے کی اجازت دیتے ہیں مختلف اقسام کی متغیر 13 00:00:30,180 --> 00:00:34,810 ایک، نئے متغیر قسم میں، جو ہم اپنے قسم کا نام تفویض کر سکتے ہیں. 14 00:00:34,810 --> 00:00:37,570 یہ ایک بہت مضبوط ہے بات، ایسا کرنے کے قابل ہونے کے لئے 15 00:00:37,570 --> 00:00:40,900 ہم نے گروپ اب کر سکتے ہیں کیونکہ مختلف اعداد و شمار اقسام کے عناصر 16 00:00:40,900 --> 00:00:43,910 ایک منطقی کنکشن ہے کہ. 17 00:00:43,910 --> 00:00:46,440 ہم ایسا کرنے کے قابل ہو گیا ہے قسم کے arrays کے ساتھ، ٹھیک ہے؟ 18 00:00:46,440 --> 00:00:49,540 ہم کر سکتے ہیں گروپ متغیر اسی ڈیٹا کی قسم کے 19 00:00:49,540 --> 00:00:53,410 ایک ساتھ مل کر ایک بڑی یونٹ میں میموری، ایک صف کی. 20 00:00:53,410 --> 00:00:56,660 >> لیکن ہم اختلاط کرنے کے قابل نہیں کیا گیا ہے ایک دوسرے کے ساتھ مختلف اعداد و شمار اقسام. 21 00:00:56,660 --> 00:01:02,610 ہم نے ایک عدد صحیح جوڑی، نہیں کہہ سکتا اور ایک کردار، اور ایک ڈبل تمام 22 00:01:02,610 --> 00:01:05,330 ایک ہی بات میں اور ایک واحد یونٹ کو فون. 23 00:01:05,330 --> 00:01:08,830 لیکن ساتھ ڈھانچے، یا اکثر، structs کے طور پر کہا جاتا ہے 24 00:01:08,830 --> 00:01:09,585 ہم اصل میں کر سکتے ہیں. 25 00:01:09,585 --> 00:01:12,370 تو ایک ڈھانچہ طرح ہے کی ایک سپر متغیر کی طرح. 26 00:01:12,370 --> 00:01:16,530 یہ پر مشتمل ہے کہ ایک متغیر ہے اس کے اندر دوسرے متغیر. 27 00:01:16,530 --> 00:01:19,650 تو یہاں کی ایک مثال ہے ایک بہت سادہ ساخت. 28 00:01:19,650 --> 00:01:23,380 یہ نحو نظر آئے گا ہے ایک گاڑی کے لئے ایک ڈھانچہ بنانا چاہتے. 29 00:01:23,380 --> 00:01:25,250 اب، یہاں نحو کے ذریعے جانے. 30 00:01:25,250 --> 00:01:27,400 struct کے، ہے اشارہ کرتا ہے کہ مطلوبہ الفاظ کی 31 00:01:27,400 --> 00:01:30,270 میں یہاں ایک نئے اعداد و شمار کی قسم پیدا کر رہا ہوں کہ. 32 00:01:30,270 --> 00:01:33,860 خاص طور پر، ڈیٹا کی قسم کا نام ہے ہم دیکھیں گے کے طور پر، struct کے کار ہونے جا رہا. 33 00:01:33,860 --> 00:01:36,640 لیکن اس ٹپ کی طرح ہے سنکلک کرنے کے لئے بند ہے کہ اس 34 00:01:36,640 --> 00:01:42,440 متغیرات میں سے ایک گروپ کے طور پر ہے کہ جا رہا ہے اسی قسم کا حصہ سمجھا جا کرنے کے لئے 35 00:01:42,440 --> 00:01:44,010 ایک منٹ میں. 36 00:01:44,010 --> 00:01:46,340 >> کاریں، ساخت کا صرف نام. 37 00:01:46,340 --> 00:01:50,590 ایک بار پھر، یہاں ڈیٹا کی قسم کی جا رہی ہے struct کے کار، نہ صرف گاڑی میں ہونا چاہیے. 38 00:01:50,590 --> 00:01:53,060 لیکن آپ different-- ہے آپ ایک سے زیادہ structs کے تخلیق 39 00:01:53,060 --> 00:01:56,950 اسی پروگرام میں، آپ کی ضرورت ہے struct اور struct کے درمیان تمیز. 40 00:01:56,950 --> 00:02:00,140 تو struct کار، میں بھی ہو سکتا ہے struct طالب علم کو، مثال کے طور پر، 41 00:02:00,140 --> 00:02:01,790 اسی پروگرام میں. 42 00:02:01,790 --> 00:02:05,980 گھوبگھرالی منحنی خطوط وحدانی کے اندر ہیں نام نہاد شعبوں کے تمام، 43 00:02:05,980 --> 00:02:07,954 یا ساخت کے ارکان. 44 00:02:07,954 --> 00:02:10,370 تو چیزوں میں سے کچھ کیا ہیں ایک کار میں شامل ہیں؟ 45 00:02:10,370 --> 00:02:15,270 ٹھیک ہے، یہ عام طور پر، ایک سال ہے ہے ایک ماڈل کا نام، اور ایک لائسنس پلیٹ، 46 00:02:15,270 --> 00:02:18,000 عام طور پر ہے کہ ایک مسافت پیما اس پر میل سے کچھ بڑی تعداد، 47 00:02:18,000 --> 00:02:19,225 اور شاید ایک انجن کے سائز. 48 00:02:19,225 --> 00:02:23,570 آپ دیکھ سکتے ہیں کے طور پر، میں اختلاط ہوں integers اور حروف اور ڈبلز. 49 00:02:23,570 --> 00:02:26,420 وہ سب کے سب جا رہے ہیں اس نئے اعداد و شمار کی قسم کا حصہ. 50 00:02:26,420 --> 00:02:29,750 >> آخر میں، آخری بات میں کرنے کی ضرورت ہے، یہ چھوٹا سا نیم وقفہ نہیں بھولنا 51 00:02:29,750 --> 00:02:30,290 آخر میں. 52 00:02:30,290 --> 00:02:34,380 ہم ڈھانچے کی وضاحت مکمل کرنے کے بعد، ہم آخر میں ایک نیم وقفہ ڈال کرنے کی ضرورت. 53 00:02:34,380 --> 00:02:37,325 یہ ایک بہت ہی عام نحوی ہے غلطی، ایک تقریب کے ساتھ کی وجہ سے، 54 00:02:37,325 --> 00:02:40,200 مثال کے طور پر، آپ کو صرف ہوگا کھلی گھوبگھرالی تسمہ، بند گھوبگھرالی منحنی خطوط وحدانی. 55 00:02:40,200 --> 00:02:42,950 آپ کو ایک نیم وقفہ نہیں ڈال ایک تقریب تعریف کے اختتام. 56 00:02:42,950 --> 00:02:46,430 یہ ایک تقریب کی طرح لگتا ہے تعریف، لیکن یہ نہیں ہے، 57 00:02:46,430 --> 00:02:49,653 اور تو نیم وقفہ سے صرف ایک یاد دہانی ہے کہ آپ 58 00:02:49,653 --> 00:02:52,440 کیونکہ وہاں ڈال کرنے کی ضرورت سنکلک دوسری صورت میں نہیں کریں گے 59 00:02:52,440 --> 00:02:53,510 اس کے ساتھ کیا کرنا ہے. 60 00:02:53,510 --> 00:02:56,160 یہ ایک بہت عام غلطی ہے اتفاقی طور پر بنانے کے لئے 61 00:02:56,160 --> 00:02:58,570 جب آپ پہلی بار ڈھانچے کی وضاحت کر رہے ہیں. 62 00:02:58,570 --> 00:02:59,500 >> ٹھیک ہے. 63 00:02:59,500 --> 00:03:02,824 تو ہم عام طور پر ہمارے ڈھانچے کی وضاحت ہمارے پروگراموں کے سب سے اوپر 64 00:03:02,824 --> 00:03:05,490 وہ شاید جا رہے ہیں کیونکہ ایک سے زیادہ کام کی طرف سے استعمال کیا جا کرنے کے لئے. 65 00:03:05,490 --> 00:03:08,850 ہم نے ایک وضاحت کرنے کے لئے نہیں کرنا چاہتے ایک تقریب کے اندر struct، 66 00:03:08,850 --> 00:03:12,110 پھر ہم only-- سکتا ہے کیونکہ ساخت کی گنجائش واقعی 67 00:03:12,110 --> 00:03:13,790 صرف اس تقریب کے اندر موجود ہے. 68 00:03:13,790 --> 00:03:17,450 ہم شاید ایک ڈھانچہ کی وضاحت کرنا چاہتے ہیں تو ہم ایک سے زیادہ کام میں اس کا استعمال کر سکتے ہیں، 69 00:03:17,450 --> 00:03:20,670 یا شاید ایک سے زیادہ میں ایک دوسرے کے ساتھ منسلک رہے ہیں کہ فائلوں 70 00:03:20,670 --> 00:03:22,920 ہماری واحد پروگرام تخلیق کرنے. 71 00:03:22,920 --> 00:03:24,920 کبھی کبھی بھی اس کی بجائے ساخت کی وضاحت کی 72 00:03:24,920 --> 00:03:27,961 آپ کو ڈال دیا جہاں بہت سب سے اوپر اپنے ، پونڈ بھی شامل ہے اور آپ پونڈ کی وضاحت 73 00:03:27,961 --> 00:03:32,080 مثال کے طور پر، آپ کو ان میں ڈال سکتا ہے علیحدہ ڈاٹ H فائلوں، تو جس سے آپ 74 00:03:32,080 --> 00:03:35,020 پونڈ خود شامل ہیں. 75 00:03:35,020 --> 00:03:37,620 >> تو ہم ڈھانچے پڑے، لیکن اب ہم ان کے اندر حاصل کرنے کی ضرورت. 76 00:03:37,620 --> 00:03:39,800 ہم کس طرح کے اندر ملتا ہے رسائی کے لئے ایک ڈھانچہ 77 00:03:39,800 --> 00:03:43,530 ان ذیلی متغیر، ان متغیرات اس کی ساخت کے اندر موجود ہیں؟ 78 00:03:43,530 --> 00:03:46,810 ٹھیک ہے، ہم کچھ ہے کی اجازت دیتا ہے جس ڈاٹ آپریٹر، 79 00:03:46,810 --> 00:03:50,990 ساخت کے شعبوں تک رسائی حاصل کرنے. 80 00:03:50,990 --> 00:03:55,490 مثال کے طور پر تو، میں اعلان کر دیا ہے کا کہنا ہے کہ میری ساخت کا ڈیٹا کہیں ٹائپ 81 00:03:55,490 --> 00:03:59,020 اپنے پروگرام کے سب سے اوپر، یا شاید میں میں پونڈ ہے کہ ایک نقطہ H فائل بھی شامل ہے. 82 00:03:59,020 --> 00:04:03,360 پھر میں نے ایک نئی تخلیق کرنے کے لئے چاہتے ہیں، تو کہ اعداد و شمار کی قسم متغیر، میں، کا کہنا ہے کہ کر سکتے ہیں 83 00:04:03,360 --> 00:04:06,260 struct کے گاڑی، میری گاڑی، نیم وقفہ. 84 00:04:06,260 --> 00:04:11,580 میں int کہہ سکتے ہیں جیسا کہ X، یا سٹرنگ نام نیم وقفہ. 85 00:04:11,580 --> 00:04:18,100 >> یہاں ڈیٹا کی قسم، struct کے کار ہے متغیر کے نام، میری گاڑی ہے 86 00:04:18,100 --> 00:04:23,770 اور پھر میں نے ڈاٹ آپریٹر استعمال کر سکتے ہیں میری گاڑی کے مختلف شعبوں تک رسائی حاصل. 87 00:04:23,770 --> 00:04:27,494 تو میں نے اپنے کار کہہ سکتے ہیں ڈاٹ سال 2011 کے برابر. 88 00:04:27,494 --> 00:04:28,410 وہ بالکل ٹھیک ہے. 89 00:04:28,410 --> 00:04:34,210 آپ کو یاد تو سال،، ایک کے طور پر بیان کیا گیا تھا اس struct گاڑی کے اندر عددی میدان 90 00:04:34,210 --> 00:04:35,200 ڈیٹا کی قسم. 91 00:04:35,200 --> 00:04:39,966 struct کے گاڑی اعداد و شمار کی کسی بھی متغیر قسم، اس طرح میری کار کے طور پر، میں نے اپنی گاڑی کہہ سکتے ہیں 92 00:04:39,966 --> 00:04:44,030 ڈاٹ سال کے برابر ہے اور پھر تفویض یہ کچھ عددی قدر، 2011. 93 00:04:44,030 --> 00:04:47,290 میری گاڑی ڈاٹ پلیٹ CS50 کے برابر ہے. 94 00:04:47,290 --> 00:04:51,180 میرا کارڈ ڈاٹ مسافت پیما 50505 نیم وقفہ کے برابر ہے. 95 00:04:51,180 --> 00:04:53,270 ان میں سے سب ہیں بالکل ٹھیک اور ہے 96 00:04:53,270 --> 00:04:57,802 ہم تک رسائی حاصل کس طرح ساخت کے شعبوں. 97 00:04:57,802 --> 00:05:00,260 تعمیرات، اگرچہ، کی ضرورت نہیں ہے اسٹیک پر پیدا کرنے کے لئے. 98 00:05:00,260 --> 00:05:02,950 بس ہم، کسی دوسرے متغیر کی طرح متحرک طور پر مختص کر سکتے ہیں ان کے. 99 00:05:02,950 --> 00:05:06,309 ہم ایک پروگرام ہے ہے کہ ہو سکتا ہے بہت ڈھانچے پیدا کی جائے، 100 00:05:06,309 --> 00:05:08,100 ہم کس طرح بہت سے نہیں جانتے ہم ضرورت کے لئے جا رہے ہیں 101 00:05:08,100 --> 00:05:10,800 تو ہم کو متحرک کرنے کی ضرورت ہے ان ڈھانچے مختص 102 00:05:10,800 --> 00:05:12,960 ہمارے پروگرام کے طور پر چل رہا ہے. 103 00:05:12,960 --> 00:05:16,600 اور ہم تک رسائی حاصل کرنے کے لئے جا رہے ہیں اگر ایسا ہے تو اس تناظر میں ایک ڈھانچے کے شعبوں، 104 00:05:16,600 --> 00:05:20,660 ہم سب سے پہلے dereference ہے کرنے کی ضرورت ہے یاد ساخت پوائنٹر، 105 00:05:20,660 --> 00:05:24,810 اور اس کے بعد ہم ایک بار dereference ہے پوائنٹر، تو ہم کھیتوں تک رسائی حاصل کر سکتے ہیں. 106 00:05:24,810 --> 00:05:26,830 ہم صرف ایک ہیں، تو ساخت پوائنٹر، 107 00:05:26,830 --> 00:05:32,120 ہم صرف پوائنٹر نقطہ میدان نہیں کہہ سکتا نام اور ہم کے لئے تلاش کر رہے ہیں حاصل. 108 00:05:32,120 --> 00:05:34,259 محولہ لقب ضبطی کے اضافی مرحلے سے نہیں ہے. 109 00:05:34,259 --> 00:05:36,050 تو کہتے ہیں کہ بجائے previous-- کے 110 00:05:36,050 --> 00:05:38,770 صرف گزشتہ مثال کی طرح، اس کی بجائے اس کا اعلان 111 00:05:38,770 --> 00:05:43,680 اسٹیک پر، struct کے کار، میرے کار، نیم وقفہ، میں، struct کے کار کا کہنا ہے کہ 112 00:05:43,680 --> 00:05:48,020 سٹار، ایک پوائنٹر struct کے گاڑی، میری گاڑی بلایا 113 00:05:48,020 --> 00:05:51,250 struct کے گاڑی کے malloc کا سائز برابر. 114 00:05:51,250 --> 00:05:54,950 کتنے ہم کا سائز پتہ لگا لیں گے آپ نئے اعداد و شمار کی قسم تک لے جاتا ہے بائٹس. 115 00:05:54,950 --> 00:05:58,570 آپ کو لازمی طور صرف استعمال کرنے کی ضرورت نہیں ہے چوڑائی، INT، یا چار، یا کسی بھی، کا سائز 116 00:05:58,570 --> 00:05:59,715 بلٹ میں ڈیٹا کی اقسام میں سے. 117 00:05:59,715 --> 00:06:02,090 سنکلک کافی ہوشیار ہے کتنے بائٹس پتہ کرنے کے لئے 118 00:06:02,090 --> 00:06:04,170 اپنے نئے ڈھانچے کی طرف سے کی ضرورت ہے. 119 00:06:04,170 --> 00:06:09,610 تو میں نے اپنے آپ کو میموری کا ایک یونٹ malloc سے ایک struct کار منعقد کرنے کے لئے کافی بڑا، 120 00:06:09,610 --> 00:06:12,410 اور میں پیچھے ایک پوائنٹر حاصل میموری کی کہ بلاک کرنے کے لئے، 121 00:06:12,410 --> 00:06:16,090 اور اس پوائنٹر میری گاڑی کو تفویض کیا جاتا ہے. 122 00:06:16,090 --> 00:06:18,050 >> اب، میں تک رسائی حاصل کرنے چاہتے ہیں تو میری گاڑی کے شعبوں، 123 00:06:18,050 --> 00:06:22,615 میں سب سے پہلے میری گاڑی dereference ہے استعمال کر رہے ہیں dereference آپریٹر، ستارہ 124 00:06:22,615 --> 00:06:26,620 ہم اشارہ سے دیکھا ہے کہ ویڈیوز، اور پھر میں dereference ہے کے بعد، 125 00:06:26,620 --> 00:06:32,200 پھر میں ڈاٹ آپریٹر استعمال کر سکتے ہیں میری گاڑی کے مختلف شعبوں تک رسائی حاصل. 126 00:06:32,200 --> 00:06:35,490 سال 2011 کے برابر ڈاٹ میری گاڑی سٹار. 127 00:06:35,490 --> 00:06:38,480 وہ اثر نہیں پڑے گا ہم اس معاملے میں آپ چاہتے ہیں، 128 00:06:38,480 --> 00:06:41,960 ہم کو متحرک طور پر ہے کیونکہ میری گاڑی مختص. 129 00:06:41,960 --> 00:06:43,610 >> یہ ٹھیک ہے، اگرچہ، اس قسم کی پریشان کن ہے؟ 130 00:06:43,610 --> 00:06:44,818 اب ایک 2 قدمی کے عمل نہیں ہے. 131 00:06:44,818 --> 00:06:47,460 اب ہم dereference-- کرنا پڑے ہم نے ایک ستارہ آپریٹر ہے، 132 00:06:47,460 --> 00:06:48,910 اور ہم ایک نقطہ آپریٹر ہے. 133 00:06:48,910 --> 00:06:51,660 اور آپ توقع کر سکتے، کیونکہ سی پروگرامرز چھوٹا طریقوں سے محبت 134 00:06:51,660 --> 00:06:53,740 باتیں کرنا، ایک نہیں ہے چھوٹا راستہ ایسا کرنے. 135 00:06:53,740 --> 00:06:57,790 تیر نامی ایک اور آپریٹر نہیں ہے، جو اس عمل کو ایک بہت آسان بنا دیتا ہے. 136 00:06:57,790 --> 00:07:00,750 تیر کام طریقہ ہے یہ سب سے پہلے dereferences کی 137 00:07:00,750 --> 00:07:03,560 بائیں پر پوائنٹر آپریٹر کی طرف، 138 00:07:03,560 --> 00:07:06,620 اور اس کے بعد، کے بعد dereferenced ہے بائیں پر پوائنٹر، 139 00:07:06,620 --> 00:07:09,620 یہ درست میدان تک رسائی حاصل. 140 00:07:09,620 --> 00:07:14,170 اور اس سے پہلے ہم نے اس طرح تھا میری کار، یہ سب چیزیں ڈاٹ سٹار 141 00:07:14,170 --> 00:07:15,880 کی طرح وہاں پر جا ایک بہت تھا. 142 00:07:15,880 --> 00:07:22,040 لیکن کیا ہم اس کی بجائے کر سکتے ہیں this-- ہے میری گاڑی تیر سال 2011 کے برابر. 143 00:07:22,040 --> 00:07:23,580 >> ایک بار پھر، یہاں کیا ہو رہا ہے؟ 144 00:07:23,580 --> 00:07:25,720 سب سے پہلے، میں نے اپنی گاڑی محولہ لقب ضبطی کر رہا ہوں. 145 00:07:25,720 --> 00:07:27,810 جو پھر، یہاں ایک پوائنٹر ہے. 146 00:07:27,810 --> 00:07:31,270 پھر، کے بعد میں نے اپنی گاڑی dereferenced 147 00:07:31,270 --> 00:07:35,130 پھر کھیتوں تک رسائی حاصل کر سکتے ہیں سال، پلیٹ، اور odometer 148 00:07:35,130 --> 00:07:40,020 صرف میں کر سکتا ہوں کے طور پر پہلی ہونے سے پہلے میری گاڑی dereference کی استعمال کیا جاتا ہے ایک ستارہ، 149 00:07:40,020 --> 00:07:42,020 اور میدان تک رسائی حاصل کرنے ڈاٹ. 150 00:07:42,020 --> 00:07:45,290 تو تم، ڈھانچے ہو سکتا ہے ڈھانچے پر اشارہ کر سکتے ہیں، 151 00:07:45,290 --> 00:07:48,360 اور آپ تک رسائی حاصل کرنے کے طریقے ہیں ان ڈھانچے کے شعبوں، 152 00:07:48,360 --> 00:07:52,600 آپ کو اشارہ کرنے کے لئے ہے، چاہے ان یا متغیر خود. 153 00:07:52,600 --> 00:07:57,640 ڈاٹ یا تیر، پر منحصر ہے متغیر کتنا اعلان کر دیا گیا. 154 00:07:57,640 --> 00:08:00,510 میں ڈوگ لایڈ ہوں، اس CS50 ہے. 155 00:08:00,510 --> 00:08:01,975