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 што мы называем PO скрынку. 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 вакол ідэі масіваў па аналогію з чымсьці яшчэ 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 З вельмі мяккімі тут. 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 Затым ваш тып дадзеных павінен быць Int. 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 Дык вось, мы маглі б аб'явіць масіў лагічных значэнняў званыя 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 калі (== 7 truthtable праўдзіва), які павінен сказаць, 110 00:05:39,000 --> 00:05:42,370 калі восьмы элемент з Truthtable праўда, 111 00:05:42,370 --> 00:05:46,760 можа быць, мы хочам, каб надрукаваць паведамленне карыстачу, Е ("ПРАЎДА! 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 булева. 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 >> Сапраўды гэтак жа мы маглі прайсціся па ўсіх элементах 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 калі вы працуеце на гульні як гульня ў крыжыкі-нулікі або лінкор, 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-Toe дошка ў лініі дзевяці 180 00:09:09,340 --> 00:09:13,810 квадраты або дошка Браняносец як лінія 100 квадратаў. 181 00:09:13,810 --> 00:09:16,010 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 або іх тэставання ва ўмоўных. 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 і мы павялічваем 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 Але С, на жаль, мы Не дапускаецца, каб зрабіць гэта. 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 Функцыя выклікаецца функцыя які атрымлівае зменную, 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 Падпраграма самай справе зусім атрымаць масіў. 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 >> Так што гэта азначае, Затым, калі выкліканы абанент 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 і ўсталяваць Int. 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 Там гэта раздрукоўка кольк. Я друк з двух цэлых лікаў. 266 00:13:23,020 --> 00:13:28,010 Я раздрукоўкі змесціва і змесціва 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