1 00:00:00,000 --> 00:00:03,388 >> [Музички] 2 00:00:03,388 --> 00:00:05,104 3 00:00:05,104 --> 00:00:06,020 Даг LLOYD: Во ред. 4 00:00:06,020 --> 00:00:07,680 Работа со еден променливи е прилично забавно. 5 00:00:07,680 --> 00:00:09,500 Но, што ако сакаме да работиме со голем број на променливи, 6 00:00:09,500 --> 00:00:12,760 но ние не сакаме да се има еден куп различни имиња летаат наоколу нашиот код? 7 00:00:12,760 --> 00:00:15,980 Во овој случај, низи се случува да дојде во навистина корисна. 8 00:00:15,980 --> 00:00:19,510 Низи се навистина основните податоци структура за било кој програмски јазик 9 00:00:19,510 --> 00:00:20,260 дека ќе го искористите. 10 00:00:20,260 --> 00:00:24,450 И тие се навистина, навистина корисни, особено, како што ќе видиме, во CS 50. 11 00:00:24,450 --> 00:00:27,870 >> Ние ги користиме за да се одржи низи вредности на истиот тип на податоци 12 00:00:27,870 --> 00:00:29,830 на соседни мемориски локации. 13 00:00:29,830 --> 00:00:32,430 Така да се каже, тоа е начин на кој можеме да се група 14 00:00:32,430 --> 00:00:35,430 еден куп на цели броеви заедно во меморија или еден куп на карактери 15 00:00:35,430 --> 00:00:38,270 или лебди во меморија навистина затвори заедно и да работат 16 00:00:38,270 --> 00:00:41,930 со нив, без да им даде на секој еден свој уникатен име, кое може да 17 00:00:41,930 --> 00:00:44,500 се незгодни по извесно време. 18 00:00:44,500 --> 00:00:48,130 >> Сега, еден начин да се analogize низи е да размислите за вашата локална пост 19 00:00:48,130 --> 00:00:49,000 канцеларија за една секунда. 20 00:00:49,000 --> 00:00:51,820 Па чекор подалеку од програмирање и само да ги затворите очите 21 00:00:51,820 --> 00:00:54,120 и да се визуелизира во вашиот ум вашиот локален поштата. 22 00:00:54,120 --> 00:00:57,160 Обично, во повеќето пост канцеларии, има голема банка 23 00:00:57,160 --> 00:01:00,490 пошта кутии на ѕидот. 24 00:01:00,490 --> 00:01:03,510 >> Низа е гигант блок на соседни меморија, 25 00:01:03,510 --> 00:01:06,120 на ист начин како што пошта банка во пост вашата канцеларија 26 00:01:06,120 --> 00:01:11,230 е голем простор на ѕид на поштата. 27 00:01:11,230 --> 00:01:15,750 Низи се подели на мали, идентична големина блокови на просторот, 28 00:01:15,750 --> 00:01:19,930 секој од нив е наречен елемент, во на ист начин дека ѕидот на пост 29 00:01:19,930 --> 00:01:23,840 канцеларија е поделен во мали, идентична големина блокови на просторот, 30 00:01:23,840 --> 00:01:27,560 што ние го нарекуваме сандаче. 31 00:01:27,560 --> 00:01:31,650 Секој елемент од низата може чување на одредена количина на податоци, 32 00:01:31,650 --> 00:01:37,540 исто како што секој пост фах е во состојба да држат определен износ на пошта. 33 00:01:37,540 --> 00:01:41,540 >> Што може да се чуваат во секој елемент од низата е променливи на истите податоци 34 00:01:41,540 --> 00:01:45,300 тип, како што се int или да се усвити, само како и во вашиот пост фах, 35 00:01:45,300 --> 00:01:47,300 може да се вклопуваат само работи од сличен тип, 36 00:01:47,300 --> 00:01:50,430 како што се писма или мали пакувања. 37 00:01:50,430 --> 00:01:55,050 И на крај, ние може да пристапите до секој елемент од низата директно од индекс број, 38 00:01:55,050 --> 00:01:59,770 исто како што ние може да пристапите до пост нашата канцеларија кутија со знаејќи нејзиниот број поштенско сандаче. 39 00:01:59,770 --> 00:02:02,750 Се надевам, дека аналогија Ви помага да стигнете главата 40 00:02:02,750 --> 00:02:05,540 околу идејата за низи од analogizing на нешто друго 41 00:02:05,540 --> 00:02:08,400 дека вие сте веројатно веќе запознаени со тоа. 42 00:02:08,400 --> 00:02:13,182 >> Во C, елементите на низата се индексирани почнувајќи од 0, а не од 1. 43 00:02:13,182 --> 00:02:14,390 И ова е навистина важно. 44 00:02:14,390 --> 00:02:18,530 И всушност, тоа е причината зошто ние, во CS 50, и зошто компјутерски научници често 45 00:02:18,530 --> 00:02:22,150 ќе се смета од 0, е поради низа С 46 00:02:22,150 --> 00:02:24,660 индексирање, која секогаш започнува од 0. 47 00:02:24,660 --> 00:02:28,730 Па ако низа се состои од n елементи, на првиот елемент на таа низа 48 00:02:28,730 --> 00:02:32,960 се наоѓа на индекс 0, и последниот елемент на низата 49 00:02:32,960 --> 00:02:36,610 се наоѓа на индексот n минус 1. 50 00:02:36,610 --> 00:02:43,160 Повторно, ако има n елементи во нашата низа, последниот индекс е n 1 минус. 51 00:02:43,160 --> 00:02:46,820 >> Значи, ако нашата низа има 50 елементи, првиот елемент се наоѓа на индекс 0, 52 00:02:46,820 --> 00:02:51,060 а последниот елемент се наоѓа на индексот 49. 53 00:02:51,060 --> 00:02:53,940 За жал, или за среќа, зависност од вашата перспектива, 54 00:02:53,940 --> 00:02:56,170 Ц е многу поблага тука. 55 00:02:56,170 --> 00:02:59,480 Тоа нема да ве спречи од оди надвор од границите на својата низа. 56 00:02:59,480 --> 00:03:03,080 Можете да пристапите до минус 3 елемент на својата низа 57 00:03:03,080 --> 00:03:07,400 или 59-тиот елемент на својата низа, ако вашиот низа има само 50 елементи. 58 00:03:07,400 --> 00:03:11,060 Тоа нема да запре својата програма од составувањето, но во рок време, 59 00:03:11,060 --> 00:03:14,350 можете да се судрите на Страшната сегментација вина 60 00:03:14,350 --> 00:03:17,460 ако почнете да се пристап до меморијата која е надвор од границите на она што 61 00:03:17,460 --> 00:03:19,260 те праша својата програма да ви даде. 62 00:03:19,260 --> 00:03:21,250 Па бидете внимателни. 63 00:03:21,250 --> 00:03:23,120 >> Што значи низа декларација изгледа? 64 00:03:23,120 --> 00:03:26,940 Како ние да се кодира низа во постоење како што се кодира било која друга променлива? 65 00:03:26,940 --> 00:03:31,250 Постојат три дела во низа declaration-- тип, име, 66 00:03:31,250 --> 00:03:31,880 и големина. 67 00:03:31,880 --> 00:03:34,088 Ова е многу сличен на променлива декларација, која 68 00:03:34,088 --> 00:03:36,970 е само еден тип и име, елементот големина се 69 00:03:36,970 --> 00:03:39,860 посебен случај за низа, затоа што се добива еден куп од нив 70 00:03:39,860 --> 00:03:41,830 во исто време. 71 00:03:41,830 --> 00:03:45,560 >> Значи типот е каков вид на променлива вас сакаме секој елемент од низата да биде. 72 00:03:45,560 --> 00:03:47,150 Го сакаат во низа на цели броеви? 73 00:03:47,150 --> 00:03:49,010 Тогаш, вашиот тип на податоци треба да биде цел број. 74 00:03:49,010 --> 00:03:51,760 Дали сакате тоа да биде Низа на двојки или пловки? 75 00:03:51,760 --> 00:03:54,545 Вид на податоци треба да биде двојно или плови. 76 00:03:54,545 --> 00:03:56,420 Името е она што сакате да се јавите на вашиот низа. 77 00:03:56,420 --> 00:04:00,970 Што сакате да го именува овој гигант банката од цели броеви или пловки или знаци 78 00:04:00,970 --> 00:04:03,250 или двојки, или што и да имате? 79 00:04:03,250 --> 00:04:04,700 Што сакате да го наречеме? 80 00:04:04,700 --> 00:04:06,110 Прилично само објаснување. 81 00:04:06,110 --> 00:04:08,610 >> И на крај, големина, која оди внатрешноста на загради, 82 00:04:08,610 --> 00:04:12,180 е колку елементи што би како вашиот низа да содржи. 83 00:04:12,180 --> 00:04:13,530 Колку броеви сакаш? 84 00:04:13,530 --> 00:04:15,570 Колку плови сакаш? 85 00:04:15,570 --> 00:04:19,070 >> Така на пример, int студент оценки 40. 86 00:04:19,070 --> 00:04:26,020 Ова изјавува низа наречен Студентски оценки, кој се состои од 40 цели броеви. 87 00:04:26,020 --> 00:04:28,180 Прилично само објаснување, се надевам. 88 00:04:28,180 --> 00:04:29,330 Еве уште еден пример. 89 00:04:29,330 --> 00:04:31,560 Цените двојно мени 8. 90 00:04:31,560 --> 00:04:34,610 Ова создава низа наречен Цените на менито, која се состои 91 00:04:34,610 --> 00:04:38,300 простор во меморијата за осум двојки. 92 00:04:38,300 --> 00:04:42,000 93 00:04:42,000 --> 00:04:45,750 >> Ако мислите дека на секој елемент од низа на податоци тип-тип, 94 00:04:45,750 --> 00:04:49,860 па на пример, еден елемент на низа на int тип, исто ви пат 95 00:04:49,860 --> 00:04:52,770 ќе мисли на сите други променлива од тип int, 96 00:04:52,770 --> 00:04:56,440 сите познати операции кои ги дискутирано претходно во работењето 97 00:04:56,440 --> 00:04:58,270 видео ќе има смисла. 98 00:04:58,270 --> 00:05:01,620 Па еве, ние би можеле да се изјаснат за низа на Booleans наречен Truthtable, 99 00:05:01,620 --> 00:05:05,590 кој се состои од простор за 10 Booleans. 100 00:05:05,590 --> 00:05:09,650 >> А потоа, исто како и ние може само да му ја додели вредност на било која друга променлива од тип 101 00:05:09,650 --> 00:05:13,470 Логичка, ние би можеле да се каже нешто како Truthtable квадратни заградата 102 00:05:13,470 --> 00:05:18,040 2, кој е како да се покаже, кој елемент на маса за вистината? 103 00:05:18,040 --> 00:05:20,350 Третиот елемент на таблица на вистинитост, затоа што се сеќавам, 104 00:05:20,350 --> 00:05:21,800 ние сме сметано од 0. 105 00:05:21,800 --> 00:05:25,690 Па тоа е како ние се укаже на Третиот елемент на таблицата на вистинитост. 106 00:05:25,690 --> 00:05:28,680 Truthtable 2 еднаква на лажни, исто како што ние би можеле да declare-- 107 00:05:28,680 --> 00:05:33,560 или би можеле да му ја додели, туку било Булова променлива тип како неточно. 108 00:05:33,560 --> 00:05:35,050 >> Ние, исто така, можат да го користат во услови. 109 00:05:35,050 --> 00:05:39,000 ако (truthtable 7 == точно), а тоа е да се каже, 110 00:05:39,000 --> 00:05:42,370 ако осмиот елемент на Truthtable е точно, 111 00:05:42,370 --> 00:05:46,760 можеби и ние сакаме да се печати порака на корисникот, printf ("n е вистина!") ;. 112 00:05:46,760 --> 00:05:50,290 Која ни предизвикува да се каже Truthtable 10 е еднакво на вистина, нели? 113 00:05:50,290 --> 00:05:53,590 Па, можам да, но тоа е прилично опасно, затоа што се сеќавам, 114 00:05:53,590 --> 00:05:56,260 имаме низа од 10 Booleans. 115 00:05:56,260 --> 00:06:02,340 Така највисок индекс дека компајлерот има дадено ни е 9. 116 00:06:02,340 --> 00:06:06,010 >> Оваа програма ќе се собере, но ако нешто друго во меморијата 117 00:06:06,010 --> 00:06:09,110 таму каде ние би Очекуваме Truthtable 10 да одат, 118 00:06:09,110 --> 00:06:13,980 ние би можеле да страдаат дефект на сегментација. Ние може да се извлечеш со тоа, но во целина, 119 00:06:13,980 --> 00:06:14,710 доста опасни. 120 00:06:14,710 --> 00:06:19,759 Значи она што го правам тука е правен Ц, но не значи дека најдобар потег. 121 00:06:19,759 --> 00:06:22,300 Сега, кога ќе се изјасни и да иницијализира низа истовремено, 122 00:06:22,300 --> 00:06:23,960 има всушност е прилично специјална синтакса кои ви 123 00:06:23,960 --> 00:06:26,250 можат да го користат за да се наполни салата на низа со почетна вредност. 124 00:06:26,250 --> 00:06:30,130 Тоа може да се незгодни да прогласи низа на големината 100, 125 00:06:30,130 --> 00:06:33,430 а потоа мора да се каже, елемент 0 еднаква со ова; елементи 1 е еднаков со ова; 126 00:06:33,430 --> 00:06:34,850 елемент 2 еднаква на тоа. 127 00:06:34,850 --> 00:06:36,370 Што е поентата, нели? 128 00:06:36,370 --> 00:06:39,470 >> Ако тоа е мал низа, вие може да се направи нешто како ова. 129 00:06:39,470 --> 00:06:44,360 Bool truthtable 3 дава отворена кадрава голема заграда и потоа запирка 130 00:06:44,360 --> 00:06:48,060 разделиме листа на елементи што сакате да го стави во низа. 131 00:06:48,060 --> 00:06:50,520 Потоа затворете кадрава заграда запирка. 132 00:06:50,520 --> 00:06:53,910 Ова создава низа големина три наречен Truthtable, 133 00:06:53,910 --> 00:06:56,090 со елементи лажно, тоа е вистина, и вистина. 134 00:06:56,090 --> 00:06:59,270 И всушност, примерна синтакса имам тука е 135 00:06:59,270 --> 00:07:03,350 иста како прават поединечни елемент синтаксата подолу. 136 00:07:03,350 --> 00:07:09,380 Овие два начини на кодирање би произведуваат иста низа. 137 00:07:09,380 --> 00:07:11,740 >> Слично на тоа, ние може да iterate во текот на сите елементи 138 00:07:11,740 --> 00:07:15,400 на низа со користење на јамка, која, всушност, е многу препорачливо 139 00:07:15,400 --> 00:07:16,790 дома вежбање. 140 00:07:16,790 --> 00:07:20,720 Како да се создаде низа од 100 цели броеви, каде што 141 00:07:20,720 --> 00:07:23,477 секој елемент од низата е неговиот индекс? 142 00:07:23,477 --> 00:07:26,560 Така на пример, имаме низа од 100 цели броеви, и во првиот елемент, 143 00:07:26,560 --> 00:07:27,790 ние сакаме да се стави 0. 144 00:07:27,790 --> 00:07:29,810 Во вториот елемент, ние сакаме да се стави 1. 145 00:07:29,810 --> 00:07:33,319 Во третиот елемент, сакаме да се стави 2; и така натаму и така натаму. 146 00:07:33,319 --> 00:07:35,360 Тоа е навистина добра at-home вежба за да го направите тоа. 147 00:07:35,360 --> 00:07:38,190 148 00:07:38,190 --> 00:07:40,220 >> Еве, тоа не изгледа како премногу не се сменило. 149 00:07:40,220 --> 00:07:44,170 Не се забележи дека меѓу квадратни загради, овој пат, 150 00:07:44,170 --> 00:07:45,830 Јас сум всушност испушташе број. 151 00:07:45,830 --> 00:07:48,000 Ако користите овој многу посебна примерна 152 00:07:48,000 --> 00:07:50,380 синтакса за да се создаде низа, вие всушност не 153 00:07:50,380 --> 00:07:53,491 се потребни за да се покаже на големината на низата претходно. 154 00:07:53,491 --> 00:07:55,740 Компајлерот е доволно паметни да се знае дека вие всушност 155 00:07:55,740 --> 00:07:58,980 сакате низа на големината 3, бидејќи се стави три елементи 156 00:07:58,980 --> 00:08:00,640 на правото на знакот за еднакво. 157 00:08:00,640 --> 00:08:04,140 Ако го стави четири, тоа ќе мора ви дава време маса вистината на големината четири; 158 00:08:04,140 --> 00:08:06,270 и така натаму и така натаму. 159 00:08:06,270 --> 00:08:09,380 >> Низи не се ограничени на еден димензија, која е прилично кул. 160 00:08:09,380 --> 00:08:12,000 Ти всушност може да има колку страна назначувачи како сакате. 161 00:08:12,000 --> 00:08:16,470 Така на пример, ако сакате да се создаде одбор за игра Линеен, кои, 162 00:08:16,470 --> 00:08:20,910 Ако некогаш сте се игра, е игра која е игра со штипки на 10 од 10 мрежа, 163 00:08:20,910 --> 00:08:22,450 можете да се создаде низа вака. 164 00:08:22,450 --> 00:08:26,030 Може да се каже bool линеен квадратни заградата 10 165 00:08:26,030 --> 00:08:29,590 затворена заграда квадратни плоштад Држач 10 затворени квадратни заграда. 166 00:08:29,590 --> 00:08:32,710 >> И тогаш, можете да изберете да протолкува ова во вашиот ум како на 10 167 00:08:32,710 --> 00:08:35,576 10 мрежа на ќелии. 168 00:08:35,576 --> 00:08:37,409 Сега, всушност, во меморијата, тоа навистина само 169 00:08:37,409 --> 00:08:42,440 остануваат 100 елементи, една димензионална низа. 170 00:08:42,440 --> 00:08:46,070 А тоа, всушност, оди ако имаат три димензии или четири или пет. 171 00:08:46,070 --> 00:08:49,420 Тоа е навистина само се множат сите indices-- 172 00:08:49,420 --> 00:08:51,130 или сите на големината specifiers-- заедно, 173 00:08:51,130 --> 00:08:53,480 и можете само да се добие едно-димензионална Низа на таа големина. 174 00:08:53,480 --> 00:08:57,090 >> Но во однос на организацијата и визуелизација и човечката перцепција, 175 00:08:57,090 --> 00:08:59,240 тоа може да биде многу полесно да работат со решетка 176 00:08:59,240 --> 00:09:02,980 ако си работат на игра како Tic-tac-пети или линеен, 177 00:09:02,980 --> 00:09:05,179 или нешто слично. 178 00:09:05,179 --> 00:09:06,970 Тоа е голема апстракција, наместо да се има 179 00:09:06,970 --> 00:09:09,340 да се размислува за Tic-tac-пети одбор како линија на девет 180 00:09:09,340 --> 00:09:13,810 плоштади или одбор линеен како линија на 100 квадрати. 181 00:09:13,810 --> 00:09:16,010 А 10 од 10 решетка или три од страна на три мрежа е веројатно 182 00:09:16,010 --> 00:09:17,225 многу повеќе лесно да се согледа. 183 00:09:17,225 --> 00:09:19,820 184 00:09:19,820 --> 00:09:22,280 >> Сега, нешто навистина важни за низи. 185 00:09:22,280 --> 00:09:25,950 Ние можеме да се однесуваат едни кон поединецот елемент од низата како променлива. 186 00:09:25,950 --> 00:09:27,700 Видовме дека порано кога бевме доделување 187 00:09:27,700 --> 00:09:32,240 вредноста Точно на одредени Booleans или да ги тестира во conditionals. 188 00:09:32,240 --> 00:09:35,960 Но, ние не може да се третираат целиот самите низи како променливи. 189 00:09:35,960 --> 00:09:41,760 Не можеме да се, на пример, да додели една низа во друга низа користите задачата 190 00:09:41,760 --> 00:09:42,930 оператор. 191 00:09:42,930 --> 00:09:44,640 Тоа не е законски Ц. 192 00:09:44,640 --> 00:09:47,920 >> Ако сакаме да се, за она што example-- ние ќе се прави во тој пример 193 00:09:47,920 --> 00:09:50,200 ќе биде да го копирате една низа во друг. 194 00:09:50,200 --> 00:09:53,810 Ако сакаме да го сториме тоа, всушност, треба да се користи телефонска линија за да го копирате во текот 195 00:09:53,810 --> 00:09:56,550 секој поединечен елемент едно по едно време. 196 00:09:56,550 --> 00:09:58,700 Знам дека е малку време. 197 00:09:58,700 --> 00:10:04,022 >> Така на пример, ако имавме овие неколку линии на код, би оваа работа? 198 00:10:04,022 --> 00:10:05,230 Па, не, тоа не би, нели? 199 00:10:05,230 --> 00:10:07,860 Бидејќи ние се обидуваме да му ја додели на храна бар. 200 00:10:07,860 --> 00:10:09,860 Тоа не се случува да се работи, затоа што тоа е низа, 201 00:10:09,860 --> 00:10:13,130 а ние само што е опишано дека тоа не е законски Ц. 202 00:10:13,130 --> 00:10:15,580 >> Наместо тоа, ако сакаме да копирате содржината на храна 203 00:10:15,580 --> 00:10:18,070 во бар, што е она што ние се обидуваме да го направите тука, 204 00:10:18,070 --> 00:10:19,970 ние ќе треба синтакса се допаѓа ова. 205 00:10:19,970 --> 00:10:24,170 Имаме за телефонска линија што оди од J е еднаков на 0 до 5, 206 00:10:24,170 --> 00:10:28,390 и ние прираст Ј на секоја итерација јамка и доделите елементи како што. 207 00:10:28,390 --> 00:10:33,360 Ова ќе резултира со бар, исто така, да се биде еден, два, три, четири, пет, 208 00:10:33,360 --> 00:10:36,730 но ние треба да го направи тоа многу бавно елемент по елемент начин, 209 00:10:36,730 --> 00:10:40,009 наместо само со копирање на целата низа. 210 00:10:40,009 --> 00:10:42,050 Во други програмски јазици, повеќе современи, 211 00:10:42,050 --> 00:10:45,610 можете да се, всушност, го прават токму тоа е толку едноставно еднаква на синтаксата. 212 00:10:45,610 --> 00:10:49,620 Но C, за жал, ние сме не е дозволено да го стори тоа. 213 00:10:49,620 --> 00:10:52,026 >> Сега, има една друга нешто што сакам да споменам 214 00:10:52,026 --> 00:10:54,650 за низи што може да биде малку малку незгодно прв пат ќе се 215 00:10:54,650 --> 00:10:55,990 работат со нив. 216 00:10:55,990 --> 00:10:59,860 Разговаравме во видео за опсег на променливите, 217 00:10:59,860 --> 00:11:04,940 дека повеќето варијабли во C, кога ќе се јавите нив во функции, се донесени од страна вредност. 218 00:11:04,940 --> 00:11:08,620 Се сеќаваш ли што значи тоа да помине нешто од вредност? 219 00:11:08,620 --> 00:11:12,570 Тоа значи дека ние сме прави копија од променлива и тоа е се проследени во. 220 00:11:12,570 --> 00:11:16,290 Функцијата callee, функцијата што е добивањето на променливата, 221 00:11:16,290 --> 00:11:17,730 не добие самата променлива. 222 00:11:17,730 --> 00:11:20,850 Тоа добива своја локална копија од него да се работи со. 223 00:11:20,850 --> 00:11:24,070 >> Низи, се разбира, го направи не го следат ова правило. 224 00:11:24,070 --> 00:11:27,600 Напротив, она што ние го нарекуваме овој Минува по референца. 225 00:11:27,600 --> 00:11:31,360 На callee всушност го прима низа. 226 00:11:31,360 --> 00:11:34,207 Не добие своите сопствена локална копија од него. 227 00:11:34,207 --> 00:11:36,040 И ако мислите дека за тоа, ова има смисла. 228 00:11:36,040 --> 00:11:39,750 Ако низи се навистина големи, таа потребно толку многу време и напор 229 00:11:39,750 --> 00:11:44,470 да се направи копија од низа на 100 или 1000 или 10.000 елементи, 230 00:11:44,470 --> 00:11:48,290 дека тоа не е достоен за тоа за функција за да добие копија од него, 231 00:11:48,290 --> 00:11:51,037 направи некои работи со неа, а потоа само да се направи со копија; 232 00:11:51,037 --> 00:11:53,120 тоа не треба да се има што виси околу повеќе. 233 00:11:53,120 --> 00:11:54,710 >> Бидејќи низи се некои обемна и тежок, 234 00:11:54,710 --> 00:11:56,001 ние само да ги помине со повикување. 235 00:11:56,001 --> 00:12:01,210 Ние само се надеваме дека функцијата да, не се скрши нешто. 236 00:12:01,210 --> 00:12:03,010 Па тоа не се всушност низа. 237 00:12:03,010 --> 00:12:05,290 Тоа не добие своја локална копија од него. 238 00:12:05,290 --> 00:12:07,170 >> Па што значи тоа, Потоа, кога callee 239 00:12:07,170 --> 00:12:08,970 манипулира со елементи на низата? 240 00:12:08,970 --> 00:12:10,780 Што се случува? 241 00:12:10,780 --> 00:12:13,210 За сега, ние ќе притајуваат повеќе зошто токму овој 242 00:12:13,210 --> 00:12:15,320 се случува, зошто низи се пренесуваат по референца 243 00:12:15,320 --> 00:12:17,810 и се друго е донесен од вредност. 244 00:12:17,810 --> 00:12:20,470 Но јас ви ветувам, ние ќе врати и да ви даде одговор 245 00:12:20,470 --> 00:12:23,750 со ова во некоја подоцнежна видео. 246 00:12:23,750 --> 00:12:28,110 >> Еве уште една вежба за вас пред да ги заврши работите на низи. 247 00:12:28,110 --> 00:12:31,400 Куп на код овде, тоа е не е особено добар стил, 248 00:12:31,400 --> 00:12:33,400 само јас ќе се направи тоа протест. 249 00:12:33,400 --> 00:12:36,660 Нема коментари во тука, што е прилично лоша форма. 250 00:12:36,660 --> 00:12:39,750 Но, тоа е само затоа што сакав да биде способен да одговара на се што е на екранот. 251 00:12:39,750 --> 00:12:44,360 >> На врвот, можете да видите дека имам со две функции декларации за сет низа 252 00:12:44,360 --> 00:12:45,820 и го постави Инт. 253 00:12:45,820 --> 00:12:49,680 Сет низа очигледно зема низа од четири броеви како свој придонес. 254 00:12:49,680 --> 00:12:52,767 И сет int очигледно зема еден цел број како свој придонес. 255 00:12:52,767 --> 00:12:54,350 Но, и двете од нив немаат излез. 256 00:12:54,350 --> 00:12:57,689 На излез, на враќање тип, на секој од нив е неважечки. 257 00:12:57,689 --> 00:12:59,480 Во главната, имаме неколку линии на код. 258 00:12:59,480 --> 00:13:02,730 Изјавуваме целобројна променлива нарекува и да се додели вредност 10. 259 00:13:02,730 --> 00:13:07,080 Изјавуваме низа од четири броеви наречен Б и го додели на елементи 0, 1, 260 00:13:07,080 --> 00:13:08,730 , 2 и 3, соодветно. 261 00:13:08,730 --> 00:13:12,190 Тогаш, имаме повик за поставена int и повик да се постави низа. 262 00:13:12,190 --> 00:13:15,910 Дефинициите на сет низа и сет int се долу, на дното. 263 00:13:15,910 --> 00:13:17,640 >> И така, повторно, јас ќе се постави прашањето. 264 00:13:17,640 --> 00:13:20,770 Што добива испечати тука на крајот на главната? 265 00:13:20,770 --> 00:13:23,020 Има еден отпечатоците COL. Јас сум печатење на два цели броја. 266 00:13:23,020 --> 00:13:28,010 Јас сум во печатење на содржината на една и содржината на Б квадратни заградата 0. 267 00:13:28,010 --> 00:13:29,880 Паузирате видеото тука и да се земе една минута. 268 00:13:29,880 --> 00:13:35,482 Може ќе дознаам што е ова функција ќе се печати на крајот? 269 00:13:35,482 --> 00:13:38,190 Се надеваме дека, ако се потсетиме на Разликата помеѓу поминува вредност 270 00:13:38,190 --> 00:13:41,680 и поминува со упатување, овој Проблемот не е премногу слабо за вас. 271 00:13:41,680 --> 00:13:44,130 А одговорот што би откривме е ова. 272 00:13:44,130 --> 00:13:47,660 Ако не сте сосема сигурни како да се зошто тоа е случај, да ги преземе и втор, 273 00:13:47,660 --> 00:13:50,620 врати се назад, да видиш што сум бил само разговара за полагање низи 274 00:13:50,620 --> 00:13:53,450 со упатување, наспроти полагање други променливи од вредност, 275 00:13:53,450 --> 00:13:56,680 и се надевам дека тоа ќе се направи малку повеќе смисла. 276 00:13:56,680 --> 00:13:59,760 >> Јас сум Даг Лојд, и ова е CS50. 277 00:13:59,760 --> 00:14:01,467