1 00:00:00,000 --> 00:00:00,520 2 00:00:00,520 --> 00:00:03,530 >> Gjuha: Le të shkruaj një program që bën të përdoruesit për dy vargjet dhe 3 00:00:03,530 --> 00:00:07,170 pastaj raporton nëse këto vargjet janë të njëjta ose jo njëjtë. 4 00:00:07,170 --> 00:00:10,290 Unë kam filluar të na jashtë këtu me duke e quajtur printf dy herë dhe duke e quajtur 5 00:00:10,290 --> 00:00:14,520 GetString dy herë, ruajtjen e kthimit Vlerat në s dhe t, respektivisht. 6 00:00:14,520 --> 00:00:17,960 >> Tani, instinktet e mia për të krahasuar këto dy vargjet do të ishte për të përdorur të njohur 7 00:00:17,960 --> 00:00:19,160 Operatori barazia - 8 00:00:19,160 --> 00:00:22,070 në qoftë se s është e barabartë e barabartë me t. 9 00:00:22,070 --> 00:00:28,120 Atëherë unë jam duke shkuar për të shkuar përpara dhe të shtypura out "Ju shtypur të njëjtën gjë! 10 00:00:28,120 --> 00:00:35,190 Por në rast se kjo nuk është e vërtetë, unë jam thjesht do të tipit printf ("Ju shtypur 11 00:00:35,190 --> 00:00:37,880 gjëra të ndryshme! 12 00:00:37,880 --> 00:00:38,850 >> Mjaft i hapur - 13 00:00:38,850 --> 00:00:41,820 Unë jam thjesht duke krahasuar s kundër t, dhe në qoftë se ata janë të barabartë, 14 00:00:41,820 --> 00:00:43,250 shtypjen nga sa më shumë. 15 00:00:43,250 --> 00:00:45,450 Le të përpilojnë dhe të drejtuar këtë program. 16 00:00:45,450 --> 00:00:51,950 Bëni të krahasuar 0. / Të krahasuar 0, thonë diçka, hello, 17 00:00:51,950 --> 00:00:54,200 thonë diçka, përshëndetje. 18 00:00:54,200 --> 00:00:56,870 >> Për fat të keq, programi mendon se unë kam shtypur gjëra të ndryshme, edhe pse unë 19 00:00:56,870 --> 00:00:59,530 shtypur në mënyrë të qartë "hello" njëjtën mënyrë dy herë. 20 00:00:59,530 --> 00:01:00,850 Tani, pse mund që të jetë? 21 00:01:00,850 --> 00:01:03,750 >> E pra, ajo rezulton se e tërë kjo kohë, vargjet kanë qenë pak më shumë 22 00:01:03,750 --> 00:01:06,780 komplekse se një sekuencë e karaktere nën kapuç. 23 00:01:06,780 --> 00:01:11,450 Në realitet, një varg është një tregues ose një adresa, konkretisht adresa 24 00:01:11,450 --> 00:01:14,640 të karakterit të parë në se rend të karaktereve. 25 00:01:14,640 --> 00:01:18,640 >> Dhe kështu që kur krahasojmë s kundër t me shenjë të barabartë të barabartë, ne jemi 26 00:01:18,640 --> 00:01:23,200 në të vërtetë duke i kërkuar, është kjo adresë barabartë barabartë me këtë vendndodhje? 27 00:01:23,200 --> 00:01:26,850 Dhe kjo nuk do të jetë rasti nëse përdoruesi ka shtypur në dy të ndryshme 28 00:01:26,850 --> 00:01:30,370 vargjet dhe ne kemi quajtur getString dy herë për të marrë ato, sepse kujtesës 29 00:01:30,370 --> 00:01:34,480 që getString përdor për të ruajtur e parë string mund të jetë këtu në RAM, por 30 00:01:34,480 --> 00:01:37,120 kujtesës që getString përdor për të ruajtur string dytë do 31 00:01:37,120 --> 00:01:38,760 që jam këtu në RAM. 32 00:01:38,760 --> 00:01:42,380 Dhe sigurisht, atëherë, këto dy copa kujtesës kanë adresa të ndryshme për 33 00:01:42,380 --> 00:01:44,220 karakteret e tyre të parë. 34 00:01:44,220 --> 00:01:46,120 >> Pra, është e barabartë e barabartë me t? 35 00:01:46,120 --> 00:01:46,885 E pra, nuk ka. 36 00:01:46,885 --> 00:01:50,510 Nëse s dhe t janë treguar të ndryshme chunks e kujtesës, si ata do të jenë nga 37 00:01:50,510 --> 00:01:54,140 duke e quajtur getString dy herë, ata nuk janë, në të vërtetë, do të jenë të njëjta. 38 00:01:54,140 --> 00:01:57,700 Pra, kjo duket të jetë rasti që të krahasohen dy vargjet në intuitiv 39 00:01:57,700 --> 00:02:01,050 mënyrë që ne presim, karakter për karakter, ne kemi nevojë për një tjetër teknikë 40 00:02:01,050 --> 00:02:02,300 krejt. 41 00:02:02,300 --> 00:02:03,902