1 00:00:00,000 --> 00:00:06,030 >> [Daqq tal-mużika] 2 00:00:06,030 --> 00:00:08,390 >> Doug LLOYD: pointers, aħna qegħdin hawn. 3 00:00:08,390 --> 00:00:11,080 Dan huwa probabbilment se tkun is-suġġett aktar diffiċli 4 00:00:11,080 --> 00:00:12,840 li nitkellmu dwar fil CS50. 5 00:00:12,840 --> 00:00:15,060 U jekk inti stajt taqra xejn dwar pointers 6 00:00:15,060 --> 00:00:19,080 qabel ma tista 'tkun xi ftit intimidanti nidħlu dan il-video. 7 00:00:19,080 --> 00:00:21,260 Huwa veru l-pointers ma jippermettu l-abbiltà 8 00:00:21,260 --> 00:00:23,740 li forsi screw up pretty ħażin meta int 9 00:00:23,740 --> 00:00:27,450 jaħdmu ma 'varjabbli, u d-data, u jikkawżaw programm tiegħek li jikkraxxja. 10 00:00:27,450 --> 00:00:30,490 Iżda dawn qed attwalment verament utli u dawn jippermettu us mod verament kbir 11 00:00:30,490 --> 00:00:33,340 li jgħaddu data b'lura u lura bejn il-funzjonijiet, 12 00:00:33,340 --> 00:00:35,490 li aħna qed inkella kapaċi jagħmlu. 13 00:00:35,490 --> 00:00:37,750 >> U hekk dak li aħna verament trid tagħmel hawnhekk hija tren 14 00:00:37,750 --> 00:00:41,060 int għandek id-dixxiplina pointer tajba, sabiex li tista 'tuża indikaturi effettiv 15 00:00:41,060 --> 00:00:43,850 li jagħmlu programmi tiegħek li ħafna aħjar. 16 00:00:43,850 --> 00:00:48,220 As I said pointers tagħtina differenti mod biex jgħaddu data bejn il-funzjonijiet. 17 00:00:48,220 --> 00:00:50,270 Issa jekk inti recall minn video qabel, meta 18 00:00:50,270 --> 00:00:53,720 konna nitkellmu dwar ambitu varjabbli, semmejt 19 00:00:53,720 --> 00:01:00,610 li l-informazzjoni kollha li aħna jgħaddu bejn funzjonijiet C jiġi mgħoddi mill-valur. 20 00:01:00,610 --> 00:01:03,070 U jien ma użatx din l tul, dak I fisser hemm 21 00:01:03,070 --> 00:01:07,170 kienet li aħna qed jgħaddu kopji tad-data. 22 00:01:07,170 --> 00:01:12,252 Meta aħna jgħaddu varjabbli għal funzjoni, aħna mhux qed attwalment jgħaddi l-varjabbli 23 00:01:12,252 --> 00:01:13,210 għall-funzjoni, id-dritt? 24 00:01:13,210 --> 00:01:17,670 Aħna qed tgħaddi kopja ta ' li d-data għall-funzjoni. 25 00:01:17,670 --> 00:01:20,760 Il-funzjoni ma dak li se u jikkalkola xi valur, 26 00:01:20,760 --> 00:01:23,180 u forsi nużaw dak il-valur meta hija tagħti lura. 27 00:01:23,180 --> 00:01:26,700 >> Kien hemm eċċezzjoni waħda għal din ir-regola li tgħaddi mill-valur, 28 00:01:26,700 --> 00:01:31,210 u aħna ser terga 'lura għal dak li huwa xi ftit aktar tard f'dan il-video. 29 00:01:31,210 --> 00:01:34,880 Jekk nużaw pointers minflok ta 'użu varjabbli, 30 00:01:34,880 --> 00:01:38,180 jew minflok tintuża l-varjabbli huma stess jew kopji tal-varjabbli, 31 00:01:38,180 --> 00:01:43,790 aħna issa jistgħu jgħaddu l-varjabbli madwar bejn il-funzjonijiet b'mod differenti. 32 00:01:43,790 --> 00:01:46,550 Dan ifisser li jekk nagħmlu bidla fil-funzjoni waħda, 33 00:01:46,550 --> 00:01:49,827 li l-bidla fil-fatt se tieħu effett fil-funzjoni differenti. 34 00:01:49,827 --> 00:01:52,160 Għal darb'oħra, din hija xi ħaġa li aħna ma setgħux jagħmlu qabel, 35 00:01:52,160 --> 00:01:56,979 u jekk inti stajt qatt ppruvaw tpartit l- valur ta 'żewġ varjabbli fi funzjoni, 36 00:01:56,979 --> 00:01:59,270 inti ħadthom ndunat din il-problema tip ta 'creeping up, right? 37 00:01:59,270 --> 00:02:04,340 >> Jekk irridu li tpartit X u Y, u aħna jgħaddihom għal funzjoni msejħa tpartit, 38 00:02:04,340 --> 00:02:08,680 ġewwa tal-funzjoni tpartit l- varjabbli do valuri tal-kambju. 39 00:02:08,680 --> 00:02:12,600 Wieħed isir tnejn, tnejn isir wieħed, iżda aħna ma attwalment 40 00:02:12,600 --> 00:02:16,890 tbiddel xejn fl-oriġinal funzjoni, fl-sejjieħ. 41 00:02:16,890 --> 00:02:19,550 Għaliex aħna ma jistgħux, aħna qed biss ħidma ma kopji tagħhom. 42 00:02:19,550 --> 00:02:24,760 Bil pointers għalkemm, nistgħu fil-fatt jgħaddu X u Y għal funzjoni. 43 00:02:24,760 --> 00:02:26,960 Dik il-funzjoni tista 'tagħmel xi ħaġa magħhom. 44 00:02:26,960 --> 00:02:29,250 U dawk il-valuri varjabbli jistgħu attwalment bidla. 45 00:02:29,250 --> 00:02:33,710 Allura dak pjuttost bidla fil kapaċità tagħna li jaħdmu bid-data. 46 00:02:33,710 --> 00:02:36,100 >> Qabel ma aħna adsa fis pointers, I think hi ta 'valur 47 00:02:36,100 --> 00:02:38,580 tieħu ftit minuti biex mur lura għall bażiċi hawn. 48 00:02:38,580 --> 00:02:41,000 U agħti ħarsa lejn kif xogħlijiet memorja tal-kompjuter 49 00:02:41,000 --> 00:02:45,340 minħabba li dawn żewġ suġġetti huma għaddejjin li attwalment tkun pretty interrelatati. 50 00:02:45,340 --> 00:02:48,480 As you know probabbilment, fuq sistema tal-kompjuter tiegħek 51 00:02:48,480 --> 00:02:51,310 ikollok a hard drive jew forsi stat drive solidu, 52 00:02:51,310 --> 00:02:54,430 xi tip ta 'post ta' ħażna fajl. 53 00:02:54,430 --> 00:02:57,950 Huwa ġeneralment x'imkien fil- viċinat ta '250 gigabytes 54 00:02:57,950 --> 00:02:59,810 li forsi ftit terabytes issa. 55 00:02:59,810 --> 00:03:02,270 U huwa fejn kollha ta 'tiegħek fajls finalment jgħixu, 56 00:03:02,270 --> 00:03:04,870 anke meta l-kompjuter tiegħek ikun mitfi off, inti tista 'ddawar lura fuq 57 00:03:04,870 --> 00:03:09,190 u inti ser issib fajls tiegħek hemm għal darb'oħra meta inti reboot sistema tiegħek. 58 00:03:09,190 --> 00:03:14,820 Iżda drives disk, bħal hard disk drive, HDD, jew stat drive solidu, SSD, 59 00:03:14,820 --> 00:03:16,050 huma spazju għall-ħażna biss. 60 00:03:16,050 --> 00:03:20,400 >> Aħna ma tistax attwalment tagħmel xejn ma id-data li hija fil-hard disk, 61 00:03:20,400 --> 00:03:22,080 jew fi stat solidu drive. 62 00:03:22,080 --> 00:03:24,950 Sabiex attwalment ibiddlu data jew jiċċaqalqu madwar, 63 00:03:24,950 --> 00:03:28,800 irridu jmexxuha għal RAM, memorja t'aċċess bl-addoċċ. 64 00:03:28,800 --> 00:03:31,170 Issa RAM, ikollok ħafna inqas ta 'fil-kompjuter tiegħek. 65 00:03:31,170 --> 00:03:34,185 Inti jista 'jkollok x'imkien fil- viċinat ta '512 megabytes 66 00:03:34,185 --> 00:03:38,850 jekk għandek kompjuter anzjani, li forsi tnejn, erba, tmienja, 16, 67 00:03:38,850 --> 00:03:41,820 possibilment anki ftit aktar, gigabytes ta 'RAM. 68 00:03:41,820 --> 00:03:46,390 Allura dak ħafna iżgħar, iżda li fejn kollha tad-data volatili jeżisti. 69 00:03:46,390 --> 00:03:48,270 Li meta nistgħu nbiddlu l-affarijiet. 70 00:03:48,270 --> 00:03:53,350 Iżda meta ngħaddu kompjuter tagħna off, kollha tad-data fil-RAM hija meqruda. 71 00:03:53,350 --> 00:03:57,150 >> Allura huwa għalhekk li għandna bżonn li jkollhom hard disk għall-lokazzjoni aktar permanenti ta 'dan, 72 00:03:57,150 --> 00:03:59,720 b'tali mod li exists- dan iwassal tkun tassew ħżiena jekk kull darba we 73 00:03:59,720 --> 00:04:03,310 daru kompjuter tagħna off, kull fajl fis-sistema tagħna kienet jitħassru. 74 00:04:03,310 --> 00:04:05,600 Allura naħdmu ġewwa ta 'RAM. 75 00:04:05,600 --> 00:04:09,210 U kull darba aħna qed jitkellem dwar memorja, pretty ħafna, fil CS50, 76 00:04:09,210 --> 00:04:15,080 aħna qed jitkellem dwar RAM, mhux hard disk. 77 00:04:15,080 --> 00:04:18,657 >> Allura meta aħna l-affarijiet jimxu fil-memorja, hija tieħu up ċertu ammont ta 'spazju. 78 00:04:18,657 --> 00:04:20,740 Kollha tat-tipi ta 'dejta li aħna kont qed taħdem ma 79 00:04:20,740 --> 00:04:23,480 jieħdu differenti ammonti ta 'spazju fil-RAM. 80 00:04:23,480 --> 00:04:27,600 Allura kull darba li inti toħloq numru sħiħ varjabbli, erba 'bytes ta' memorja 81 00:04:27,600 --> 00:04:30,750 huma mwarrba fl RAM sabiex inti jistgħu jaħdmu ma 'dak numru sħiħ. 82 00:04:30,750 --> 00:04:34,260 Inti tista 'tiddikjara n-numru sħiħ, jibdlu, tassenja din 83 00:04:34,260 --> 00:04:36,700 għal valur 10 inkrementat minn wieħed, hekk u hekk. 84 00:04:36,700 --> 00:04:39,440 Dak kollu li jeħtieġ li jiġri fil RAM, u ikollok erba 'bytes 85 00:04:39,440 --> 00:04:42,550 biex jaħdmu ma għal kull numru sħiħ li inti toħloq. 86 00:04:42,550 --> 00:04:45,410 >> Kull karattru inti toħloq gets byte wieħed. 87 00:04:45,410 --> 00:04:48,160 Li jinsab biss kif ħafna spazju hija meħtieġa biex jaħżnu karattru. 88 00:04:48,160 --> 00:04:51,310 Kull float, reali numru, gets erba 'bytes 89 00:04:51,310 --> 00:04:53,390 sakemm huwa a double preċiżjoni floating point 90 00:04:53,390 --> 00:04:56,510 numru, li tippermetti li inti ikollhom ċifri iktar preċiżi jew aktar 91 00:04:56,510 --> 00:04:59,300 wara l-punt deċimali mingħajr ma jitilfu preċiżjoni, 92 00:04:59,300 --> 00:05:01,820 li jieħdu tmien bytes ta 'memorja. 93 00:05:01,820 --> 00:05:06,730 Twal twal, interi verament kbir, wkoll jieħdu tmien bytes ta 'memorja. 94 00:05:06,730 --> 00:05:09,000 Kemm bytes ta 'memorja do kordi jieħdu? 95 00:05:09,000 --> 00:05:12,990 Well ejja tpoġġi pin f'dak kwistjoni għal issa, iżda aħna ser terga 'lura għal dan. 96 00:05:12,990 --> 00:05:17,350 >> Allura lura għall din l-idea tal-memorja kif firxa kbira ta 'ċelluli ta' daqs byte. 97 00:05:17,350 --> 00:05:20,871 Li verament kollox huwa, huwa biss firxa enormi ta 'ċelluli, 98 00:05:20,871 --> 00:05:23,370 bħal kull firxa oħra li int familjari ma 'u tara, 99 00:05:23,370 --> 00:05:26,430 ħlief kull element huwa byte wieħed wiesa '. 100 00:05:26,430 --> 00:05:30,030 U bħad firxa, kull element ikollu l-indirizz. 101 00:05:30,030 --> 00:05:32,120 Kull element ta 'firxa għandu indiċi, u aħna 102 00:05:32,120 --> 00:05:36,302 jista 'juża dik l-indiċi li tagħmel hekk imsejħa t'aċċess bl-addoċċ fuq il-firxa. 103 00:05:36,302 --> 00:05:38,510 Aħna ma jkollhom biex tibda fil il-bidu tal-firxa, 104 00:05:38,510 --> 00:05:40,569 jtenni permezz ta 'kull element uniku tiegħu, 105 00:05:40,569 --> 00:05:41,860 biex issib dak li aħna qed tfittex. 106 00:05:41,860 --> 00:05:45,790 Nistgħu biss jgħidu, nixtieq li jasal sal- 15 element jew element 100. 107 00:05:45,790 --> 00:05:49,930 U inti tista 'biss jgħaddu dak in-numru u jiksbu l-valur li qed tfittex. 108 00:05:49,930 --> 00:05:54,460 >> Bl-istess mod kull post fil-memorja għandha l-indirizz. 109 00:05:54,460 --> 00:05:57,320 Allura memorja tiegħek jista tfittex xi ħaġa bħal din. 110 00:05:57,320 --> 00:06:01,420 Hawn blokki żgħir ħafna ta ' memorja, dan huwa 20 bytes ta 'memorja. 111 00:06:01,420 --> 00:06:04,060 L-ewwel 20 bytes għaliex tiegħi tindirizza hemm fil-qiegħ 112 00:06:04,060 --> 00:06:08,890 huma 0, 1, 2, 3, u għalhekk fuq it-triq kollha sa 19. 113 00:06:08,890 --> 00:06:13,190 U meta Niddikjara varjabbli u meta I tibda taħdem magħhom, 114 00:06:13,190 --> 00:06:15,470 is-sistema se jistabbilixxu twarrab xi spazju għalija 115 00:06:15,470 --> 00:06:17,595 f'dan memorja li jaħdmu ma 'varjabbli tiegħi. 116 00:06:17,595 --> 00:06:21,610 So I jista 'jgħid, char c ugwali kapital H. U x'inhu jiġri? 117 00:06:21,610 --> 00:06:23,880 Ukoll is-sistema se imwarrba għalija wieħed byte. 118 00:06:23,880 --> 00:06:27,870 F'dan il-każ hija għażlet għadd byte erba, il-byte fl-indirizz erba, 119 00:06:27,870 --> 00:06:31,310 u li għaddej biex jaħżnu l- H kapital ittra fil hemm għalija. 120 00:06:31,310 --> 00:06:34,350 Jekk I imbagħad ngħid veloċità int limitu ekwivalenti għal 65, huwa 121 00:06:34,350 --> 00:06:36,806 ser titwarrab erba bytes ta 'memorja għalija. 122 00:06:36,806 --> 00:06:39,180 U li għaddej biex jikkura dawk erba 'bytes bħala unità waħda 123 00:06:39,180 --> 00:06:41,305 għaliex dak li aħna qed jaħdmu ma huwa integer hawn. 124 00:06:41,305 --> 00:06:44,350 U li għaddej biex jaħżnu 65 fil hemmhekk. 125 00:06:44,350 --> 00:06:47,000 >> Issa diġà jien tip ta ' tghidlek daqsxejn ta jimteddu, 126 00:06:47,000 --> 00:06:50,150 dritt, għaliex aħna nafu li kompjuters jaħdmu binarja. 127 00:06:50,150 --> 00:06:53,100 Huma ma jifhmux neċessarjament dak kapital H hija 128 00:06:53,100 --> 00:06:57,110 jew dak 65. huwa, huma biss jifhmu binarja, żerijiet u dawk. 129 00:06:57,110 --> 00:06:59,000 U hekk fil-fatt dak aħna qed ħażna fil hemm 130 00:06:59,000 --> 00:07:03,450 mhuwiex l-ittra H u n-numru 65, iżda pjuttost il-rappreżentanzi binarja 131 00:07:03,450 --> 00:07:06,980 tiegħu, li tfittex ftit xi ħaġa bħal din. 132 00:07:06,980 --> 00:07:10,360 U b'mod partikolari fil- kuntest tal-varjabbli numru sħiħ, 133 00:07:10,360 --> 00:07:13,559 mhuwiex ser biss bżiq fi, huwa mhux ser titratta dan bħala wieħed erba 134 00:07:13,559 --> 00:07:15,350 blokki byte neċessarjament, huwa attwalment għaddejjin 135 00:07:15,350 --> 00:07:19,570 sabiex titratta dan bħala erba waħda biċċiet byte, li tista 'tidher xi ħaġa bħal din. 136 00:07:19,570 --> 00:07:22,424 U anki dan mhux kompletament veru jew, 137 00:07:22,424 --> 00:07:24,840 minħabba xi ħaġa imsejħa l endianness, li aħna mhux qed 138 00:07:24,840 --> 00:07:26,965 se jsibu rwieħhom issa, iżda jekk int kurjuż dwar, 139 00:07:26,965 --> 00:07:29,030 inti tista 'taqra fuq ftit u endianness kbar. 140 00:07:29,030 --> 00:07:31,640 Iżda għall-finijiet ta 'dan l-argument, għall-fini ta 'dan il-video, 141 00:07:31,640 --> 00:07:34,860 ejja biss wieħed jassumi li hija, fil fatt, kif in-numru 65 se 142 00:07:34,860 --> 00:07:36,970 tkun rappreżentata fil memorja fuq kull sistema, 143 00:07:36,970 --> 00:07:38,850 għalkemm mhuwiex kompletament veru. 144 00:07:38,850 --> 00:07:41,700 >> Imma ejja fil-fatt biss tikseb rid ta 'kollha binarja għal kollox, 145 00:07:41,700 --> 00:07:44,460 u biss jaħsbu dwar kif H u 65, huwa ħafna aktar faċli 146 00:07:44,460 --> 00:07:47,900 biex jaħsbu dwar dan simili li bħala bniedem. 147 00:07:47,900 --> 00:07:51,420 Kull dritt, hekk jidher ukoll forsi ftit każwali li I've- sistema tiegħi 148 00:07:51,420 --> 00:07:55,130 ma jagħtu me bytes 5, 6, 7, u 8 biex jaħżnu l-eqreb numru sħiħ. 149 00:07:55,130 --> 00:07:58,580 Hemm raġuni għal dan, wisq, li aħna mhux se jsibu rwieħhom dritt issa, iżda huwa biżżejjed 150 00:07:58,580 --> 00:08:00,496 ngħid li dak l- kompjuter qed tagħmel hawn 151 00:08:00,496 --> 00:08:02,810 huwa probabbilment pass tajjeb min-naħa tagħha. 152 00:08:02,810 --> 00:08:06,020 Biex ma jagħtux me memorja li l- neċessarjament lura lura. 153 00:08:06,020 --> 00:08:10,490 Għalkemm li għaddej biex tagħmel dan issa jekk I rridu nġibu string ieħor, 154 00:08:10,490 --> 00:08:13,080 imsejħa kunjom, u nixtieq li jpoġġu Lloyd fil hemmhekk. 155 00:08:13,080 --> 00:08:18,360 Jien ser jeħtieġ li jitwaħħal wieħed karattru, kull ittra ta 'dak l 156 00:08:18,360 --> 00:08:21,330 se jitlob wieħed karattru, byte wieħed ta 'memorja. 157 00:08:21,330 --> 00:08:26,230 Mela jekk jien tista 'tpoġġi Lloyd fis firxa tiegħi bħal dan jien pretty tajba biex tmur, id-dritt? 158 00:08:26,230 --> 00:08:28,870 X'hemm nieqes? 159 00:08:28,870 --> 00:08:31,840 >> Ftakar li kull sekwenza naħdmu magħhom C tispiċċa bil backslash żero, 160 00:08:31,840 --> 00:08:33,339 u ma nistgħux jħalli barra li hawn, lanqas. 161 00:08:33,339 --> 00:08:36,090 Għandna bżonn li jitwarrbu byte wieħed tal-memorja li jiġi kkonstatat li hekk aħna 162 00:08:36,090 --> 00:08:39,130 jafu meta string tagħna ikun intemm. 163 00:08:39,130 --> 00:08:41,049 Għalhekk għal darb'oħra dan l-arranġament ta 'l-affarijiet mod 164 00:08:41,049 --> 00:08:42,799 jidhru fl-jista memorja jkun ftit każwali, 165 00:08:42,799 --> 00:08:44,870 iżda fil-fatt huwa kif bosta sistemi huma mfassla. 166 00:08:44,870 --> 00:08:48,330 Għal-linja up fuq multipli ta 'erba', għal raġunijiet darb'oħra 167 00:08:48,330 --> 00:08:50,080 li ma kellniex bżonn biex jsibu rwieħhom dritt issa. 168 00:08:50,080 --> 00:08:53,060 Iżda dan, hekk huwa biżżejjed li jingħad li wara dawn it-tliet linji ta 'kodiċi, 169 00:08:53,060 --> 00:08:54,810 dan huwa dak memorja jista 'dehra. 170 00:08:54,810 --> 00:08:58,930 I Jekk bżonn postijiet memorja 4, 8, u 12 sabiex tinżamm data tiegħi, 171 00:08:58,930 --> 00:09:01,100 dan huwa dak memorja tiegħi jista 'dehra. 172 00:09:01,100 --> 00:09:04,062 >> U biss tkun partikolarment pedantic hawn, meta 173 00:09:04,062 --> 00:09:06,020 aħna qed jitkellem dwar memorja indirizzi aħna normalment 174 00:09:06,020 --> 00:09:08,390 tagħmel hekk billi tuża notazzjonijiet hexadeċimali. 175 00:09:08,390 --> 00:09:12,030 Allura għaliex ma we jikkonvertu kollha ta 'dawn minn deċimali għall eżadeċimali 176 00:09:12,030 --> 00:09:15,010 biss għaliex dan huwa ġeneralment kif aħna nirreferu għall-memorja. 177 00:09:15,010 --> 00:09:17,880 Allura minflok ma 0 sa 19, dak li għandna huwa żero 178 00:09:17,880 --> 00:09:20,340 x żero permezz żero x1 tlieta. 179 00:09:20,340 --> 00:09:23,790 Dawn huma l-20 bytes ta 'memorja li aħna jkunu jew aħna qed tħares lejn fil din id-dehra 180 00:09:23,790 --> 00:09:25,540 dritt hawn. 181 00:09:25,540 --> 00:09:29,310 >> Allura kollha ta 'dak being said, ejja pass lil hinn mill-memorja għat-tieni 182 00:09:29,310 --> 00:09:30,490 u lura għall pointers. 183 00:09:30,490 --> 00:09:32,420 Hawn hu l-aktar importanti ħaġa li tiftakar 184 00:09:32,420 --> 00:09:34,070 kif aħna tibda taħdem ma pointers. 185 00:09:34,070 --> 00:09:36,314 A pointer huwa xejn aktar minn indirizz. 186 00:09:36,314 --> 00:09:38,230 I ser ngħid mill-ġdid minħabba huwa importanti li, 187 00:09:38,230 --> 00:09:42,730 a pointer huwa xejn aktar minn indirizz. 188 00:09:42,730 --> 00:09:47,760 Pointers huma tindirizza lill-postijiet fil-memorja fejn varjabbli jgħixu. 189 00:09:47,760 --> 00:09:52,590 Jafu li din issir nittamaw ftit aktar faċli li taħdem magħhom. 190 00:09:52,590 --> 00:09:54,550 Ħaġa oħra I simili tagħmel huwa li jkollhom sort 191 00:09:54,550 --> 00:09:58,510 ta 'dijagrammi viżwalment jirrappreżenta x'hemm jiġri mal-linji differenti ta 'kodiċi. 192 00:09:58,510 --> 00:10:00,660 U aħna ser nagħmlu dan koppja ta 'drabi fil pointers, 193 00:10:00,660 --> 00:10:03,354 u meta nitkellmu dwar dinamiku allokazzjoni memorja kif ukoll. 194 00:10:03,354 --> 00:10:06,020 Għaliex naħseb li dawn dijagrammi jista 'jkun partikolarment utli. 195 00:10:06,020 --> 00:10:09,540 >> Mela jekk jien ngħid per eżempju, int k fil-kodiċi tiegħi, dak li qed jiġri? 196 00:10:09,540 --> 00:10:12,524 Ukoll dak li bażikament jiġri huwa Jien jkollna memorja mwarrba għalija, 197 00:10:12,524 --> 00:10:14,690 imma jien ma anki simili li taħseb dwarha bħal dik, I 198 00:10:14,690 --> 00:10:16,300 simili biex jaħsbu dwar dan bħal kaxxa. 199 00:10:16,300 --> 00:10:20,090 I jkollhom kaxxa u huwa aħdar kkulurita għaliex I 200 00:10:20,090 --> 00:10:21,750 tista 'tpoġġi numri interi fil-kaxxi ħodor. 201 00:10:21,750 --> 00:10:23,666 Jekk kien karattru I jista 'jkollhom kaxxa blu. 202 00:10:23,666 --> 00:10:27,290 Imma jien dejjem ngħid, jekk jien ħolqien kaxxa li tista 'żżomm interi 203 00:10:27,290 --> 00:10:28,950 li l-kaxxa hija kkulurita aħdar. 204 00:10:28,950 --> 00:10:33,020 U jien tieħu immarkar permanenti u nikteb k fuq in-naħa ta 'dan. 205 00:10:33,020 --> 00:10:37,590 So I jkollhom kaxxa msejħa k, li fih I tista 'tpoġġi interi. 206 00:10:37,590 --> 00:10:41,070 Allura meta I say int k, li dak li jiġri fir-ras tiegħi. 207 00:10:41,070 --> 00:10:43,140 Jekk ngħid k ugwali ħamsa, dak am I tagħmel? 208 00:10:43,140 --> 00:10:45,110 Well, jien tqegħid ħamsa fil-kaxxa, id-dritt. 209 00:10:45,110 --> 00:10:48,670 Dan huwa pjuttost sempliċi, jekk I say int k, joħolqu kaxxa msejħa k. 210 00:10:48,670 --> 00:10:52,040 Jekk ngħid k ugwali 5, jitqiegħdu ħamsa fil-kaxxa. 211 00:10:52,040 --> 00:10:53,865 Nisperaw li mhux wisq ta 'qabża. 212 00:10:53,865 --> 00:10:55,990 Hawn fejn l-affarijiet imorru a ftit interessanti għalkemm. 213 00:10:55,990 --> 00:11:02,590 Jekk ngħid int * pk, sew anke jekk jien ma jafu liema dan neċessarjament ifisser, 214 00:11:02,590 --> 00:11:06,150 huwa ltqajna xi ħaġa b'mod ċar li tagħmel ma 'numru sħiħ. 215 00:11:06,150 --> 00:11:08,211 Hekk jien ser kulur din il-kaxxa ħadra ish, 216 00:11:08,211 --> 00:11:10,210 Naf huwa ltqajna xi ħaġa li tagħmel ma 'numru sħiħ, 217 00:11:10,210 --> 00:11:13,400 iżda mhux numru sħiħ innifsu, għaliex dan huwa star int. 218 00:11:13,400 --> 00:11:15,390 Hemm xi ħaġa kemmxejn differenti dwar dan. 219 00:11:15,390 --> 00:11:17,620 Hekk involuti s integer, iżda altrimenti huwa 220 00:11:17,620 --> 00:11:19,830 mhux wisq differenti minn dak li konna nitkellmu. 221 00:11:19,830 --> 00:11:24,240 Huwa kaxxa, tagħha ltqajna tikketta, huwa liebes pk tikketta, 222 00:11:24,240 --> 00:11:27,280 u huwa kapaċi holding stilla Int, ikun x'ikun dawk huma. 223 00:11:27,280 --> 00:11:29,894 Huma għandhom xi ħaġa li tagħmel ma interi, b'mod ċar. 224 00:11:29,894 --> 00:11:31,060 Hawn l-aħħar linja għalkemm. 225 00:11:31,060 --> 00:11:37,650 Jekk ngħid pk = & k, Whoa, dak li ġara biss, id-dritt? 226 00:11:37,650 --> 00:11:41,820 Allura dan in-numru bl-addoċċ, apparentement każwali numru, gets jintefa 'fil-kaxxa hemmhekk. 227 00:11:41,820 --> 00:11:44,930 Dak kollu li huwa, huwa pk gets-indirizz ta 'k. 228 00:11:44,930 --> 00:11:52,867 Hekk jien teħel fejn k jgħix fil-memorja, indirizz tagħha,-indirizz ta 'bytes tagħha. 229 00:11:52,867 --> 00:11:55,200 All qed nagħmel huwa jien qal li valur huwa dak li jien ser 230 00:11:55,200 --> 00:11:59,430 li jitqiegħdu ġewwa tal-kaxxa msejħa pk tiegħi. 231 00:11:59,430 --> 00:12:02,080 U minħabba dawn l-affarijiet huma pointers, u minħabba tħares 232 00:12:02,080 --> 00:12:04,955 fi string bħal żero x tmienja żero c seba erba tmienja 233 00:12:04,955 --> 00:12:07,790 tnejn żero huwa probabbilment m'għandux sinifikat kbir. 234 00:12:07,790 --> 00:12:12,390 Meta aħna ġeneralment Ħares pointers, aħna fil-fatt jagħmlu dan bħala pointers. 235 00:12:12,390 --> 00:12:17,000 Pk tagħtina l-informazzjoni għandna bżonn issib k fil-memorja. 236 00:12:17,000 --> 00:12:19,120 Allura bażikament pk għandha vleġġa fiha. 237 00:12:19,120 --> 00:12:21,670 U jekk aħna mixja it-tul ta 'dak vleġġa, jimmaġina 238 00:12:21,670 --> 00:12:25,280 huwa xi ħaġa inti tista 'timxi fuq, jekk aħna jimxu tul it-tul tal-vleġġa, 239 00:12:25,280 --> 00:12:29,490 fil-ponta ħafna ta 'dak vleġġa, aħna issib il-post fil-memorja 240 00:12:29,490 --> 00:12:31,390 fejn k jgħix. 241 00:12:31,390 --> 00:12:34,360 U li verament importanti minħabba li ladarba nafu fejn k jgħix, 242 00:12:34,360 --> 00:12:37,870 nistgħu tibda taħdem mal-data ġewwa tal f'dak il-post memorja. 243 00:12:37,870 --> 00:12:40,780 Għalkemm aħna qed jkollna teeny daqsxejn quddiem ta 'ruħna għal issa. 244 00:12:40,780 --> 00:12:42,240 >> Allura dak li huwa pointer? 245 00:12:42,240 --> 00:12:45,590 A pointer huwa oġġett data li valur huwa indirizz tal-memorja. 246 00:12:45,590 --> 00:12:49,740 Dan kien li żero x tmien Jittieħed żero għaddej, li kienet l-indirizz tal-memorja. 247 00:12:49,740 --> 00:12:52,060 Dan kien post fil-memorja. 248 00:12:52,060 --> 00:12:55,080 U t-tip ta 'pointer jiddeskrivi t-tip 249 00:12:55,080 --> 00:12:56,930 ta 'data inti ser issib fuq dak l-indirizz memorja. 250 00:12:56,930 --> 00:12:58,810 Allura hemm il-lemin parti istilla int. 251 00:12:58,810 --> 00:13:03,690 Jekk nimxi li vleġġa, huwa ser iwasslu lili għal post. 252 00:13:03,690 --> 00:13:06,980 U f'dak il-post, dak I se ssib hemm fl-eżempju tiegħi, 253 00:13:06,980 --> 00:13:08,240 huwa kaxxa kkulurita aħdar. 254 00:13:08,240 --> 00:13:12,650 Huwa ta 'numru sħiħ, dan huwa dak I issib jekk immur f'dak l-indirizz. 255 00:13:12,650 --> 00:13:14,830 Dejta tat-tip ta ' pointer jiddeskrivi liema 256 00:13:14,830 --> 00:13:17,936 inti ser issib f'dak l-indirizz tal-memorja. 257 00:13:17,936 --> 00:13:19,560 Allura hawnhekk-ħaġa verament jibred għalkemm. 258 00:13:19,560 --> 00:13:25,090 Pointers inessu jgħaddu varjabbli bejn funzjonijiet. 259 00:13:25,090 --> 00:13:28,520 U fil-fatt jgħaddu varjabbli u ma jgħaddu kopji tagħhom. 260 00:13:28,520 --> 00:13:32,879 Għaliex jekk nafu eżattament fejn fil-memorja biex isibu varjabbli, 261 00:13:32,879 --> 00:13:35,670 ma kellniex bżonn biex jagħmel kopja ta ' dan, nistgħu biss mur f'dak il-post 262 00:13:35,670 --> 00:13:37,844 u taħdem ma 'dak varjabbli. 263 00:13:37,844 --> 00:13:40,260 Għalhekk, essenzjalment pointers sort ta tagħmel ambjent kompjuter 264 00:13:40,260 --> 00:13:42,360 ħafna aktar bħall-dinja reali, id-dritt. 265 00:13:42,360 --> 00:13:44,640 >> Allura hawnhekk analoġija. 266 00:13:44,640 --> 00:13:48,080 Ejja ngħidu li għandi notebook, dritt, u huwa sħiħa ta 'noti. 267 00:13:48,080 --> 00:13:50,230 U nixtieq li inti jaġġornah. 268 00:13:50,230 --> 00:13:53,960 Inti funzjoni li aġġornamenti jinnota, id-dritt. 269 00:13:53,960 --> 00:13:56,390 Fil-mod aħna kont qed taħdem s'issa, liema 270 00:13:56,390 --> 00:14:02,370 jiġri huwa inti se tieħu notebook tiegħi, inti ser tmur għall-maħżen kopja, 271 00:14:02,370 --> 00:14:06,410 inti ser tagħmel kopja Xerox ta kull paġna tal-notebook. 272 00:14:06,410 --> 00:14:09,790 Int ser ikollok tħalli notebook tiegħi lura fuq l-iskrivanija tiegħi meta qed isir, 273 00:14:09,790 --> 00:14:14,600 inti ser tmur u jaqsmu l-affarijiet fil tiegħi notebook li huma skaduti jew żbaljati, 274 00:14:14,600 --> 00:14:19,280 u allura inti ser tgħaddi lura lill me-munzell ta 'paġni Xerox 275 00:14:19,280 --> 00:14:22,850 li huwa r-replika ta 'notebook tiegħi ma il-bidliet li inti ħadna lilu. 276 00:14:22,850 --> 00:14:27,040 U f'dak il-punt, huwa sa lili bħala il-funzjoni li ssejjaħ, bħala l-sejjieħ, 277 00:14:27,040 --> 00:14:30,582 biex jiddeċiedu li jieħdu noti tiegħek u jintegrawhom lura fis notebook tiegħi. 278 00:14:30,582 --> 00:14:32,540 Allura hemm ħafna ta 'passi involuti hawnhekk, id-dritt. 279 00:14:32,540 --> 00:14:34,850 Bħal ma kienx ikun aħjar jekk I biss jgħidu, ħej, inti tista 280 00:14:34,850 --> 00:14:38,370 aġġornament notebook tiegħi għal me, inti idejn notebook tiegħi, 281 00:14:38,370 --> 00:14:40,440 u tieħu affarijiet u litteralment jaqsmu lilhom out 282 00:14:40,440 --> 00:14:42,810 u taġġorna noti tiegħi fil notebook tiegħi. 283 00:14:42,810 --> 00:14:45,140 U mbagħad tagħti me notebook tiegħi lura. 284 00:14:45,140 --> 00:14:47,320 Dak it-tip ta 'dak pointers inessu li tagħmel, 285 00:14:47,320 --> 00:14:51,320 dawn jagħmlu dan l-ambjent ħafna aktar simili kif noperaw fir-realtà. 286 00:14:51,320 --> 00:14:54,640 >> Dritt kollha hekk dan huwa dak pointer huwa, ejja nitkellmu 287 00:14:54,640 --> 00:14:58,040 dwar kif pointers jaħdmu C, u kif nistgħu tibda taħdem magħhom. 288 00:14:58,040 --> 00:15:02,550 Allura hemm pointer sempliċi ħafna C imsejjaħ il-pointer null. 289 00:15:02,550 --> 00:15:04,830 Il-punti pointer nulla sa xejn. 290 00:15:04,830 --> 00:15:08,310 Dan probabbilment tidher qisha huwa fil-fatt mhux xi ħaġa utli ħafna, 291 00:15:08,310 --> 00:15:10,500 imma kif aħna ser tara ftit aktar tard, il-fatt 292 00:15:10,500 --> 00:15:15,410 li jeżisti dan il-werrej null fil-fatt verament jista 'jidħol fil handy. 293 00:15:15,410 --> 00:15:19,090 U kull meta inti toħloq pointer, u inti ma jistabbilixxu immediately- valur tagħha 294 00:15:19,090 --> 00:15:21,060 eżempju tat-twaqqif valur tiegħu immedjatament 295 00:15:21,060 --> 00:15:25,401 se jkun slides koppja lura fejn I said pk ugwali & k, 296 00:15:25,401 --> 00:15:28,740 pk gets indirizz k, kif Ser naraw dak li tfisser, 297 00:15:28,740 --> 00:15:32,990 Ser naraw kif kodiċi li shortly- jekk aħna ma jistabbilixxu valur tagħha għal xi ħaġa 298 00:15:32,990 --> 00:15:35,380 sinifikanti immedjatament, għandek dejjem 299 00:15:35,380 --> 00:15:37,480 sett pointer tiegħek għall-punt li nulla. 300 00:15:37,480 --> 00:15:40,260 Għandek tissettja għall-punt li xejn. 301 00:15:40,260 --> 00:15:43,614 >> Li l differenti ħafna minn biss li jħallu l-valur kif inhi 302 00:15:43,614 --> 00:15:45,530 u għaldaqstant iddikjarat a pointer u biss jekk wieħed jassumi 303 00:15:45,530 --> 00:15:48,042 huwa null minħabba li rarament veru. 304 00:15:48,042 --> 00:15:50,000 Allura għandek dejjem stabbiliti il-valur ta 'pointer 305 00:15:50,000 --> 00:15:55,690 biex null jekk inti ma jistabbilixxu l-valur tagħha għal xi ħaġa sinifikanti immedjatament. 306 00:15:55,690 --> 00:15:59,090 Tista 'tiċċekkja jekk il-valur ta' pointer s huwa null użu l-operatur ugwaljanza 307 00:15:59,090 --> 00:16:05,450 (==), Bħad inti tqabbel kull numru sħiħ valuri jew il-valuri karattru li jużaw (==) 308 00:16:05,450 --> 00:16:06,320 kif ukoll. 309 00:16:06,320 --> 00:16:10,994 Huwa tip speċjali ta 'kostanti valur li tista 'tuża biex tittestja. 310 00:16:10,994 --> 00:16:13,160 Allura li kien sempliċi ħafna pointer, il pointer null. 311 00:16:13,160 --> 00:16:15,320 Mod ieħor biex joħolqu a pointer huwa li estratt 312 00:16:15,320 --> 00:16:18,240 l-indirizz ta 'varjabbli inti stajt diġà maħluqa, 313 00:16:18,240 --> 00:16:22,330 u inti tagħmel dan bl-użu & estrazzjoni indirizz operatur. 314 00:16:22,330 --> 00:16:26,720 Li konna diġà raw qabel fl-ewwel eżempju dijagramma I wera. 315 00:16:26,720 --> 00:16:31,450 Mela jekk x huwa varjabbli li konna diġà ħoloq tal numru sħiħ it-tip, 316 00:16:31,450 --> 00:16:35,110 allura & x hija pointer għal numru sħiħ. 317 00:16:35,110 --> 00:16:39,810 & x is- tiftakar, u se estratt l-indirizz tal-ħaġa fuq il-lemin. 318 00:16:39,810 --> 00:16:45,350 U peress pointer huwa biss l-indirizz, minn & x hija pointer għal numru sħiħ 319 00:16:45,350 --> 00:16:48,560 valur tagħhom huwa fejn fil-ħajja memorja x. 320 00:16:48,560 --> 00:16:50,460 Huwa indirizz x s. 321 00:16:50,460 --> 00:16:53,296 Allura & x huwa l-indirizz ta 'x. 322 00:16:53,296 --> 00:16:55,670 Ejja tieħu dan il-pass wieħed aktar u qabbad għal xi ħaġa 323 00:16:55,670 --> 00:16:58,380 I allużjoni għall fil-video qabel. 324 00:16:58,380 --> 00:17:06,730 Jekk arr firxa ta jirdoppja, allura & bracket kwadru arr i huwa pointer 325 00:17:06,730 --> 00:17:08,109 għal sistema. 326 00:17:08,109 --> 00:17:08,970 KOLLOX SEW. 327 00:17:08,970 --> 00:17:12,160 arr parentesi kwadri i, jekk arr firxa ta jirdoppja, 328 00:17:12,160 --> 00:17:19,069 imbagħad arr bracket kwadru i huwa l-element numru i ta 'dak array, 329 00:17:19,069 --> 00:17:29,270 u & arr bracket kwadru i huwa fejn fil l-element numru i tal arr jeżisti memorja. 330 00:17:29,270 --> 00:17:31,790 >> Allura x'inhu l-implikazzjoni hawn? 331 00:17:31,790 --> 00:17:34,570 Isem arrays, l-implikazzjoni ta 'dan il-ħaġa sħiħa, 332 00:17:34,570 --> 00:17:39,290 huwa li l-isem ta 'firxa hija fil-fatt fih innifsu pointer. 333 00:17:39,290 --> 00:17:41,170 You ħadthom ilhom jaħdmu ma pointers kollha flimkien 334 00:17:41,170 --> 00:17:45,290 kull darba li inti stajt użati firxa. 335 00:17:45,290 --> 00:17:49,090 Ftakar mill-eżempju dwar l-ambitu varjabbli, 336 00:17:49,090 --> 00:17:53,420 qrib it-tmiem tal-video I preżenti eżempju fejn għandna funzjoni 337 00:17:53,420 --> 00:17:56,890 imsejħa int sett u funzjoni imsejħa sett firxa. 338 00:17:56,890 --> 00:18:00,490 U l-isfida tiegħek biex jiddeterminaw jekk le, jew dak il- 339 00:18:00,490 --> 00:18:03,220 valuri li aħna stampati l-aħħar tal-funzjoni, 340 00:18:03,220 --> 00:18:05,960 fl-aħħar tal-programm prinċipali. 341 00:18:05,960 --> 00:18:08,740 >> Jekk inti recall minn dan leżempju jew jekk inti stajt jaraw l-video, 342 00:18:08,740 --> 00:18:13,080 inti taf li meta lilek--sejħa għall int sett effettivament ma xejn. 343 00:18:13,080 --> 00:18:16,390 Iżda l-sejħa biex jistabbilixxu firxa ma. 344 00:18:16,390 --> 00:18:19,280 U jien tip ta 'glossed fuq għaliex li kien il-każ fiż-żmien. 345 00:18:19,280 --> 00:18:22,363 I biss qal, ukoll huwa firxa, huwa speċjali, inti taf, hemm raġuni. 346 00:18:22,363 --> 00:18:25,020 Ir-raġuni hija li l-firxa isem huwa verament ftit pointer, 347 00:18:25,020 --> 00:18:28,740 u hemm dan speċjali sintassi bracket kwadru li 348 00:18:28,740 --> 00:18:30,510 tagħmel affarijiet ħafna nicer li jaħdmu magħhom. 349 00:18:30,510 --> 00:18:34,410 U huma jagħmlu l-idea ta ' pointer ħafna inqas intimidanti, 350 00:18:34,410 --> 00:18:36,800 u hu għalhekk dawn qed tip ta ppreżentati b'dan il-mod. 351 00:18:36,800 --> 00:18:38,600 Imma verament arrays huma biss pointers. 352 00:18:38,600 --> 00:18:41,580 U hu għalhekk li meta aħna għamlu bidla lill-firxa, 353 00:18:41,580 --> 00:18:44,880 meta aħna għadda firxa bħala parametru għal funzjoni jew bħala argument 354 00:18:44,880 --> 00:18:50,110 għal funzjoni, il-kontenut tal-firxa fatt inbidlu kemm l callee 355 00:18:50,110 --> 00:18:51,160 u fil-sejjieħ. 356 00:18:51,160 --> 00:18:55,846 Li għal kull tip ieħor ta ' varjabbli rajna ma kienx il-każ. 357 00:18:55,846 --> 00:18:58,970 Allura dan huwa biss xi ħaġa li wieħed iżomm f'moħħna meta inti qed jaħdmu ma 'pointers, 358 00:18:58,970 --> 00:19:01,610 huwa li l-isem ta ' firxa attwalment pointer 359 00:19:01,610 --> 00:19:04,750 l-ewwel element ta 'dik array. 360 00:19:04,750 --> 00:19:08,930 >> OK hekk issa għandna dawn kollha fatti, ejja jibqgħu għaddejjin, id-dritt. 361 00:19:08,930 --> 00:19:11,370 Għaliex we care about fejn xi ħaġa jgħix. 362 00:19:11,370 --> 00:19:14,120 Well bħal I said, huwa pjuttost utli li tkun taf fejn xi ħaġa jgħix 363 00:19:14,120 --> 00:19:17,240 sabiex inti tista 'tmur hemm u jibdlu. 364 00:19:17,240 --> 00:19:19,390 Jaħdmu magħha u fil-fatt jkollhom il-ħaġa li inti 365 00:19:19,390 --> 00:19:23,710 trid tagħmel għal dak iseħħu varjabbli, u m'għandhiex ikollha effett fuq xi kopja ta 'dan. 366 00:19:23,710 --> 00:19:26,150 Din tissejjaħ dereferencing. 367 00:19:26,150 --> 00:19:28,690 Immorru-referenza u aħna jibdlu l-valur hemmhekk. 368 00:19:28,690 --> 00:19:32,660 Mela jekk ikollna pointer u huwa msejjaħ pc, u hija tirreferi għall karattru, 369 00:19:32,660 --> 00:19:40,610 allura nistgħu ngħidu * pc u * pc huwa l- isem ta 'dak li aħna ser issib jekk immorru 370 00:19:40,610 --> 00:19:42,910 fl-indirizz pc. 371 00:19:42,910 --> 00:19:47,860 Dak li ser issib hemm karattru u * pc huwa kif aħna nirreferi għad-dejta f'dak 372 00:19:47,860 --> 00:19:48,880 post. 373 00:19:48,880 --> 00:19:54,150 Allura nistgħu ngħidu xi ħaġa bħal * pc = D jew xi ħaġa bħal dik, 374 00:19:54,150 --> 00:19:59,280 u dan ifisser li kwalunkwe kien fl-indirizz tal-memorja pc, 375 00:19:59,280 --> 00:20:07,040 ikun x'ikun karattru kien preċedentement hemm, issa huwa D, jekk ngħidu * pc = D. 376 00:20:07,040 --> 00:20:10,090 >> So here we go darb'oħra ma xi għalf C stramb, id-dritt. 377 00:20:10,090 --> 00:20:14,560 Allura aħna stajt tidher * preċedentement bħala b'xi parti mit-tip tad-data, 378 00:20:14,560 --> 00:20:17,160 u issa huwa qed jintuża fil F'kuntest xi ftit differenti 379 00:20:17,160 --> 00:20:19,605 aċċess għad-data fil-post. 380 00:20:19,605 --> 00:20:22,480 Naf huwa ftit konfuża u li fil-fatt parti minn dan kollu 381 00:20:22,480 --> 00:20:25,740 simili, għaliex pointers jkollhom din mitoloġija madwarhom bħala li tkun b'hekk kumplessi, 382 00:20:25,740 --> 00:20:28,250 huwa tip ta 'problema sintassi, onestament. 383 00:20:28,250 --> 00:20:31,810 Iżda * huwa użat fiż-żewġ kuntesti, kemm bħala parti mill-isem tat-tip, 384 00:20:31,810 --> 00:20:34,100 u aħna ser tara ftit xi ħaġa aktar tard oħra, wisq. 385 00:20:34,100 --> 00:20:36,490 U d-dritt issa huwa l- operatur dereference. 386 00:20:36,490 --> 00:20:38,760 Għalhekk tmur għall-referenza, aċċessi l-informazzjoni 387 00:20:38,760 --> 00:20:43,000 fil-post ta 'l-pointer, u jippermettilek li jimmanipulaw fil-se. 388 00:20:43,000 --> 00:20:45,900 >> Issa dan huwa simili ħafna għal jżuru proxxmu tiegħek, id-dritt. 389 00:20:45,900 --> 00:20:48,710 Jekk inti taf liema tiegħek proxxmu jgħix, int 390 00:20:48,710 --> 00:20:50,730 mhux mdendlin mal-proxxmu tiegħek. 391 00:20:50,730 --> 00:20:53,510 Inti taf li inti jiġri li jafu fejn jgħixu, 392 00:20:53,510 --> 00:20:56,870 iżda dan ma jfissirx li mill minħabba li jkollu dak l-għarfien 393 00:20:56,870 --> 00:20:59,170 inti jinteraġixxi magħhom. 394 00:20:59,170 --> 00:21:01,920 Jekk inti tixtieq li jinteraġixxu magħhom, ikollok tmur għall-dar tagħhom, 395 00:21:01,920 --> 00:21:03,760 ikollok tmur fejn jgħixu. 396 00:21:03,760 --> 00:21:07,440 U ladarba inti tagħmel dan, allura inti tista jinteraġixxu 397 00:21:07,440 --> 00:21:09,420 magħhom bħad youd tixtieq li. 398 00:21:09,420 --> 00:21:12,730 U l-istess ma 'varjabbli, għandek bżonn biex tmur indirizz tagħhom 399 00:21:12,730 --> 00:21:15,320 jekk inti tixtieq li jinteraġixxu magħhom, inti ma tistax biss taf l-indirizz. 400 00:21:15,320 --> 00:21:21,495 U l-mod inti tmur għall-indirizz huwa għall-użu *, l-operatur dereference. 401 00:21:21,495 --> 00:21:23,620 What do you think jiġri jekk nippruvaw u dereference 402 00:21:23,620 --> 00:21:25,260 a pointer li l-valur huwa null? 403 00:21:25,260 --> 00:21:28,470 Ifakkar li l-null pointer punti għal xejn. 404 00:21:28,470 --> 00:21:34,110 Mela jekk inti tipprova u dereference xejn jew mur l xejn indirizz, 405 00:21:34,110 --> 00:21:36,800 x'taħseb jiġri? 406 00:21:36,800 --> 00:21:39,630 Segmentazzjoni Ukoll jekk inti guessed tort, youd tkun id-dritt. 407 00:21:39,630 --> 00:21:41,390 Jekk inti tipprova u dereference a pointer null, 408 00:21:41,390 --> 00:21:43,140 inti tbati segmentazzjoni tort. Imma stenna, 409 00:21:43,140 --> 00:21:45,820 ma I jgħidlek, li jekk int mhux se 410 00:21:45,820 --> 00:21:49,220 li jiġu stabbiliti valur tiegħek ta tiegħek pointer li xi ħaġa sinifikanti, 411 00:21:49,220 --> 00:21:51,000 għandek stabbiliti biex null? 412 00:21:51,000 --> 00:21:55,290 Jien għamilt u fil-fatt l-segmentazzjoni tort huwa tip ta 'mġieba tajba. 413 00:21:55,290 --> 00:21:58,680 >> Qatt iddikjara varjabbli u mhux assenjat valur tiegħu immedjatament? 414 00:21:58,680 --> 00:22:02,680 Allura inti biss jgħidu int x; inti ma attwalment tassenja lill xejn 415 00:22:02,680 --> 00:22:05,340 u mbagħad aktar tard fil-kodiċi tiegħek, inti jistampa l-valur ta 'x, 416 00:22:05,340 --> 00:22:07,650 peress li kien għadu ma assenjati lill xejn. 417 00:22:07,650 --> 00:22:10,370 Spiss inti ser tingħata żero, imma xi kultant inti 418 00:22:10,370 --> 00:22:15,000 tista 'tikseb xi numru bl-addoċċ, u għandek l-ebda idea fejn ġew minn. 419 00:22:15,000 --> 00:22:16,750 Bl-istess mod tista affarijiet jiġri ma pointers. 420 00:22:16,750 --> 00:22:20,110 Meta inti tiddikjara pointer int * pk per eżempju, 421 00:22:20,110 --> 00:22:23,490 u inti ma tassenja lil xi valur, ikollok erba 'bytes għall-memorja. 422 00:22:23,490 --> 00:22:25,950 Tkun xi tkun erba 'bytes ta' memorja tas-sistema jista ' 423 00:22:25,950 --> 00:22:28,970 issib li jkollhom xi valur sinifikanti. 424 00:22:28,970 --> 00:22:31,760 U hemm seta 'kien xi ħaġa diġà hemmhekk li 425 00:22:31,760 --> 00:22:34,190 m'għadhiex meħtieġa mill ieħor funzjoni, sabiex inti biss għandek 426 00:22:34,190 --> 00:22:35,900 tkun xi tkun id-data kien hemm. 427 00:22:35,900 --> 00:22:40,570 >> X'jiġri jekk inti ippruvaw jagħmlu dereference xi indirizz li inti don't- kien hemm 428 00:22:40,570 --> 00:22:43,410 diġà bytes u informazzjoni hemm, li issa fil pointer tiegħek. 429 00:22:43,410 --> 00:22:47,470 Jekk inti tipprova u dereference li pointer, inti tista 'tkun messing ma' xi memorja 430 00:22:47,470 --> 00:22:49,390 li inti ma kellux intenzjoni mess mal dan kollu. 431 00:22:49,390 --> 00:22:51,639 U fil-fatt inti tista 'tagħmel xi ħaġa verament devastanti, 432 00:22:51,639 --> 00:22:54,880 bħal break programm ieħor, jew pawża funzjoni oħra, 433 00:22:54,880 --> 00:22:58,289 jew tagħmel xi ħaġa malizzjużi li inti ma intenzjoni li jagħmlu fil-livelli kollha. 434 00:22:58,289 --> 00:23:00,080 U hekk hu għalhekk huwa attwalment idea tajba 435 00:23:00,080 --> 00:23:04,030 li jiġu stabbiliti pointers tiegħek biex null jekk inti ma jistabbilixxu lilhom għal xi ħaġa sinifikanti. 436 00:23:04,030 --> 00:23:06,760 Huwa probabbilment aħjar fil- aħħar tal-ġurnata għal programm tiegħek 437 00:23:06,760 --> 00:23:09,840 li jikkraxxja imbagħad biex tagħmel Xi ħaġa li viti up 438 00:23:09,840 --> 00:23:12,400 programm ieħor jew funzjoni oħra. 439 00:23:12,400 --> 00:23:15,207 Li l-imġieba hija probabbilment anki inqas ideali milli sempliċiment jiġġarrfu. 440 00:23:15,207 --> 00:23:17,040 U hekk hu għalhekk huwa attwalment drawwa tajba 441 00:23:17,040 --> 00:23:20,920 li jsibu rwieħhom biex jistabbilixxu pointers tiegħek biex null jekk inti ma jistabbilixxu lilhom 442 00:23:20,920 --> 00:23:24,540 għal valur sinifikanti immedjatament, valur li inti taf 443 00:23:24,540 --> 00:23:27,260 u li inti tista sikur l dereference. 444 00:23:27,260 --> 00:23:32,240 >> Mela ejja terga 'lura issa u tagħti ħarsa fil-sintassi ġenerali tas-sitwazzjoni. 445 00:23:32,240 --> 00:23:37,400 Jekk ngħid int * p ;, dak li I biss jsir? 446 00:23:37,400 --> 00:23:38,530 What I ghamilt hija din. 447 00:23:38,530 --> 00:23:43,290 Naf li l-valur ta 'p huwa indirizz minħabba pointers kollha huma biss 448 00:23:43,290 --> 00:23:44,660 indirizzi. 449 00:23:44,660 --> 00:23:47,750 I tista p dereference użu l-operatur *. 450 00:23:47,750 --> 00:23:51,250 F'dan il-kuntest hawn, fil-ħafna top mfakkra l-* hija parti mit-tip. 451 00:23:51,250 --> 00:23:53,510 Int * hija t-tip tad-data. 452 00:23:53,510 --> 00:23:56,150 Imma nista 'dereference p tuża l-operatur *, 453 00:23:56,150 --> 00:24:01,897 u jekk nagħmel hekk, jekk immur għal dak l-indirizz, dak li se nsib f'dak l-indirizz? 454 00:24:01,897 --> 00:24:02,855 I ser issib numru sħiħ. 455 00:24:02,855 --> 00:24:05,910 Allura int * p hija bażikament qal, p huwa indirizz. 456 00:24:05,910 --> 00:24:09,500 I tista dereference p u jekk I do, I ser issib numru sħiħ 457 00:24:09,500 --> 00:24:11,920 f'dak il-post memorja. 458 00:24:11,920 --> 00:24:14,260 >> OK so I qal ma kien hemm ieħor Ħaġa annoying bl-istilel 459 00:24:14,260 --> 00:24:17,060 u hawn fejn dak Ħaġa annoying bl-istilel huwa. 460 00:24:17,060 --> 00:24:21,640 Qatt ppruvaw li tiddikjara varjabbli multipli tal-istess tip 461 00:24:21,640 --> 00:24:24,409 fuq l-istess linja tal-kodiċi? 462 00:24:24,409 --> 00:24:27,700 Allura għat-tieni, nippretendu li l-linja, il-kodiċi I attwalment jkollhom hemmhekk fl-aħdar 463 00:24:27,700 --> 00:24:29,366 ma jkunx hemm u hija biss jgħid int x, y, z ;. 464 00:24:29,366 --> 00:24:31,634 465 00:24:31,634 --> 00:24:34,550 What li tagħmel huwa attwalment joħolqu tliet fatturi varjabbli numru sħiħ għalik, 466 00:24:34,550 --> 00:24:36,930 wieħed imsejjaħ x, wieħed imsejjaħ y, u wieħed imsejjaħ z. 467 00:24:36,930 --> 00:24:41,510 Huwa mod biex tagħmel dan mingħajr jkollhom maqsuma fuq tliet linji. 468 00:24:41,510 --> 00:24:43,890 >> Hawn fejn istilel jiksbu annoying darb'oħra għalkemm, 469 00:24:43,890 --> 00:24:49,200 minħabba li l-* huwa attwalment parti kemm tal-isem tip u parti 470 00:24:49,200 --> 00:24:50,320 tal-isem varjabbli. 471 00:24:50,320 --> 00:24:56,430 U hekk jekk ngħid int * px, py, PZ, dak I fil-fatt tikseb huwa pointer għal integer 472 00:24:56,430 --> 00:25:01,650 imsejħa px u żewġ interi, PY u PZ. 473 00:25:01,650 --> 00:25:04,950 U li probabbilment ma jkunx dak irridu, li mhux tajba. 474 00:25:04,950 --> 00:25:09,290 >> Mela jekk jien tixtieq li toħloq pointers multipli fuq l-istess linja, tal-istess tip, 475 00:25:09,290 --> 00:25:12,140 u l-istilel, dak I attwalment bżonn tagħmel hu jgħidu int * pa, * pb, * pc. 476 00:25:12,140 --> 00:25:17,330 477 00:25:17,330 --> 00:25:20,300 Issa wara li biss qal li u issa tghidlek dan, 478 00:25:20,300 --> 00:25:22,170 inti probabilment qatt se tagħmel dan. 479 00:25:22,170 --> 00:25:25,170 U huwa probabbilment ħaġa tajba onestament, għaliex inti tista involontarjament 480 00:25:25,170 --> 00:25:26,544 jħalli barra stilla, xi ħaġa bħal dik. 481 00:25:26,544 --> 00:25:29,290 Huwa probabbilment l-aħjar biex forsi tiddikjara pointers fuq linji individwali, 482 00:25:29,290 --> 00:25:31,373 imma huwa biss wieħed ieħor ta 'dawk sintassi annoying 483 00:25:31,373 --> 00:25:35,310 affarijiet ma stilla li jagħmlu pointers daqshekk diffiċli biex jaħdmu ma '. 484 00:25:35,310 --> 00:25:39,480 Għaliex dan huwa biss dan sintattika mess inti għandek taħdem permezz. 485 00:25:39,480 --> 00:25:41,600 Bil-prattika dan ma verament issir tieni natura. 486 00:25:41,600 --> 00:25:45,410 I għadhom jagħmlu żbalji miegħu xorta wara ipprogrammar għal 10 snin, 487 00:25:45,410 --> 00:25:49,630 sabiex ma jiġi mqalleb jekk jiġri xi ħaġa lilek, huwa pjuttost komuni onestament. 488 00:25:49,630 --> 00:25:52,850 Huwa tassew tip ta difett tal-sintassi. 489 00:25:52,850 --> 00:25:54,900 >> OK so I tip ta 'imwiegħda li aħna se tirrevedi 490 00:25:54,900 --> 00:25:59,370 il-kunċett ta 'kemm tkun kbira hija sekwenza. 491 00:25:59,370 --> 00:26:02,750 Ukoll jekk I qallek li spag, konna verament tip ta ' 492 00:26:02,750 --> 00:26:04,140 ġie tinsab għalik il-ħin kollu. 493 00:26:04,140 --> 00:26:06,181 M'hemm l-ebda tip ta 'dejta msejħa spag, u fil-fatt I 494 00:26:06,181 --> 00:26:09,730 imsemmi din f'wieħed mill tagħna videos kmieni dwar it-tipi ta 'data, 495 00:26:09,730 --> 00:26:13,820 li string kienet tip data li inħoloq għalik fil CS50.h. 496 00:26:13,820 --> 00:26:17,050 Int għandek #include CS50.h sabiex jużawh. 497 00:26:17,050 --> 00:26:19,250 >> Ukoll string huwa verament ftit alias għal xi ħaġa 498 00:26:19,250 --> 00:26:23,600 imsejjaħ il-char *, a pointer li karattru. 499 00:26:23,600 --> 00:26:26,010 Well pointers, irtirar, huma biss tindirizza. 500 00:26:26,010 --> 00:26:28,780 Allura x'inhu d-daqs fi bytes ta 'string? 501 00:26:28,780 --> 00:26:29,796 Ukoll huwa erba 'jew tmien. 502 00:26:29,796 --> 00:26:32,170 U r-raġuni I say erba 'jew tmienja huwa minħabba li attwalment 503 00:26:32,170 --> 00:26:36,730 jiddependi fuq is-sistema, Jekk inti qed tuża Ide CS50, char * huwa d-daqs ta 'char 504 00:26:36,730 --> 00:26:39,340 * Huwa tmienja, huwa sistema 64-bit. 505 00:26:39,340 --> 00:26:43,850 Kull indirizz fil-memorja huwa 64 bits tul. 506 00:26:43,850 --> 00:26:48,270 Jekk inti qed tuża apparat CS50 jew bl-użu kull magna 32-bit, 507 00:26:48,270 --> 00:26:51,640 u inti widnejna dak it-terminu 32-bit magna, liema huwa magna 32-bit? 508 00:26:51,640 --> 00:26:56,090 Ukoll dan ifisser biss li kull indirizz fil-memorja huwa 32 bits tul. 509 00:26:56,090 --> 00:26:59,140 U għalhekk 32 bits huwa erba bytes. 510 00:26:59,140 --> 00:27:02,710 Allura char * huwa erba 'jew tmien bytes skond is-sistema tiegħek. 511 00:27:02,710 --> 00:27:06,100 U fil-fatt xi tipi ta 'data, u pointer għal kwalunkwe data 512 00:27:06,100 --> 00:27:12,030 tip, peress li indikaturi kollha huma biss indirizzi, huma erba 'jew tmien bytes. 513 00:27:12,030 --> 00:27:14,030 Mela ejja rriveduti dan dijagramma u ejja jikkonkludu 514 00:27:14,030 --> 00:27:18,130 dan il-video ma eżerċizzju ftit hawn. 515 00:27:18,130 --> 00:27:21,600 Allura hawnhekk-dijagramma aħna jitħalla 'off ma' fil-bidu nett tal-video. 516 00:27:21,600 --> 00:27:23,110 Allura x'jiġri issa jekk ngħid * pk = 35? 517 00:27:23,110 --> 00:27:26,370 518 00:27:26,370 --> 00:27:30,530 Allura dak ma jfisser meta ngħidilhom, * PK = 35? 519 00:27:30,530 --> 00:27:32,420 Tieħu t-tieni. 520 00:27:32,420 --> 00:27:34,990 * pk. 521 00:27:34,990 --> 00:27:39,890 Fil-kuntest hawn, * huwa operatur dereference. 522 00:27:39,890 --> 00:27:42,110 Allura meta l-dereference operatur huwa użat, 523 00:27:42,110 --> 00:27:48,520 immorru l-indirizz indikat billi pk, u nagħmlu l-bidla dak li nsibu. 524 00:27:48,520 --> 00:27:55,270 Allura * pk = 35 effettivament ma dan għall-istampa. 525 00:27:55,270 --> 00:27:58,110 Allura huwa bażikament sintattikament identika għal ta 'wara li qal k = 35. 526 00:27:58,110 --> 00:28:00,740 527 00:28:00,740 --> 00:28:01,930 >> Wieħed aktar. 528 00:28:01,930 --> 00:28:05,510 Jekk ngħid int m, I joħolqu varjabbli ġdida msejħa m. 529 00:28:05,510 --> 00:28:08,260 A kaxxa ġdida, huwa kaxxa ħadra għaliex li għaddej biex iżommu numru sħiħ, 530 00:28:08,260 --> 00:28:09,840 u huwa ttikkettjat m. 531 00:28:09,840 --> 00:28:14,960 Jekk ngħid m = 4, I tpoġġi numru sħiħ f'dak kaxxa. 532 00:28:14,960 --> 00:28:20,290 Jekk ngħidu aħna pk = & m, kif ma din il-bidla dijagramma? 533 00:28:20,290 --> 00:28:28,760 Pk = & m, do inti recall dak l- & Operatur ma jew tissejjaħ? 534 00:28:28,760 --> 00:28:34,430 Ftakar li & xi isem varjabbli huwa l-indirizz ta 'isem varjabbli. 535 00:28:34,430 --> 00:28:38,740 Allura dak li aħna qed tgħid huwa pk gets-indirizz ta 'm. 536 00:28:38,740 --> 00:28:42,010 U hekk effettivament x'jiġri l- dijagramma huwa li PK punti m'għadux 537 00:28:42,010 --> 00:28:46,420 k iżda żviluppi li m. 538 00:28:46,420 --> 00:28:48,470 >> Għal darb'oħra pointers huma ħafna delikata biex jaħdmu ma 539 00:28:48,470 --> 00:28:50,620 u li jieħdu ħafna ta ' prattika, iżda minħabba 540 00:28:50,620 --> 00:28:54,150 tal-kapaċità tagħhom biex jippermettu li inti jgħaddu data bejn funzjonijiet 541 00:28:54,150 --> 00:28:56,945 u fil-fatt ikollhom dawk bidliet jidħlu fis-seħħ, 542 00:28:56,945 --> 00:28:58,820 jkollna ras tiegħek madwar huwa verament importanti. 543 00:28:58,820 --> 00:29:02,590 Huwa probabbilment l-aktar kumplikata suġġett niddiskutu fil CS50, 544 00:29:02,590 --> 00:29:05,910 iżda l-valur li inti jiksbu milli jużaw pointers 545 00:29:05,910 --> 00:29:09,200 sakemm jisboq l-kumplikazzjonijiet li jiġu mit-tagħlim minnhom. 546 00:29:09,200 --> 00:29:12,690 So I jixtiequ inti l-aħjar ta ' Xorti tagħlim dwar pointers. 547 00:29:12,690 --> 00:29:15,760 Jien Doug Lloyd, dan huwa CS50. 548 00:29:15,760 --> 00:29:17,447