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 >> Сега, един от начините за подобен съм масиви е да се мисли за местната пощенска 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 тип, като инт или Чар, просто като във вашата пощенска кутия, 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, е поради масив C е 46 00:02:22,150 --> 00:02:24,660 индексиране, които винаги започва при 0. 47 00:02:24,660 --> 00:02:28,730 Така че, ако масив се състои от наш елементи, първият елемент на този масив 48 00:02:28,730 --> 00:02:32,960 се намира в индекс 0, и последният елемент на масива 49 00:02:32,960 --> 00:02:36,610 се намира в индекса п минус 1. 50 00:02:36,610 --> 00:02:43,160 Отново, ако има наш елементи в нашата масив, последната индекса е п минус 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 C е много снизходителен тук. 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 Pretty самостоятелно обяснителен. 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 Това декларира масив наречена Student класове, които се състои от 40 числа. 87 00:04:26,020 --> 00:04:28,180 Pretty самостоятелно обяснителен, надявам се. 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 Така че тук, можем да декларираме масив от Булев тип наречени Truthtable, 99 00:05:01,620 --> 00:05:05,590 който се състои от стая в продължение на 10 Булев тип. 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 може би ще искате да отпечатате съобщение на потребителя, ФОРМАТ ("п TRUE!") ;. 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 Булев тип. 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 Така че това, което правя тук е юридическо C, но не е задължително най-добрият ход. 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 Булев 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 >> По същия начин, можем да превъртите над всички елементи 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 Това е един наистина добър в дома упражнения да правя това. 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-так-палеца или Battleship, 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-так-палеца борда като линия на девет 180 00:09:09,340 --> 00:09:13,810 квадрати или на борда Battleship като линия от 100 квадрата. 181 00:09:13,810 --> 00:09:16,010 A 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 стойността True до определени Булев тип или тестването им в условни. 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 Това не е юридическо C. 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 и ние току-що описах че това не е юридическо C. 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 и ние увеличаваме J на ​​всяка итерация на примката и да се определят елементите, като тази. 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 The 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 или 10000 елементи, 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 Set масив очевидно отнема масив от четири числа, като своя принос. 254 00:12:49,680 --> 00:12:52,767 И набор инт очевидно отнема едно цяло число, както е нейното въвеждане. 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 В Main, имаме Няколко реда код. 258 00:12:59,480 --> 00:13:02,730 Декларираме на целочислена променлива наречен A и го присвоява стойност 10. 259 00:13:02,730 --> 00:13:07,080 Ние заявяваме, масив от четири числа наречена B и задайте елементите на 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 Определенията на набор масив и набор инт са по-долу, на дъното. 263 00:13:15,910 --> 00:13:17,640 >> И така, отново, аз ви задам въпроса. 264 00:13:17,640 --> 00:13:20,770 Какво получава разпечатани тук в края на Main? 265 00:13:20,770 --> 00:13:23,020 Има една разпечатка цв. Аз съм разпечатване на две цели числа. 266 00:13:23,020 --> 00:13:28,010 Аз съм отпечатване на съдържанието на A и съдържанието на B квадратна скоба 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