SPEAKER: Poďme napísať program, ktorý vyzve užívateľa na zadanie dvoch reťazcov a potom hlási, či sú tieto reťazce sú rovnaké alebo sa líšia. Už som sa k nám nastupuje tu volanie printf dvakrát a volanie GetString dvakrát, skladovanie návrat hodnoty S a T, resp. Teraz, môj inštinkt porovnať tieto dve reťazca by bolo použitie zoznámiť operátor rovnosti - ak je rovná rovná t Potom budem pokračovať a tlač out "Zadali ste to isté! Inak, ak to nie je pravda, ja som jednoducho bude typu printf ("ste zadali rôzne veci! Celkom jednoduché - Som proste porovnaní s proti t, a ak sú rovnaké, vytlačiť toľko. Poďme skompilovať a spustiť tento program. Uistite sa porovnať 0. / Porovnať 0, povedz niečo, Dobrý deň, niečo povedať, ahoj. Bohužiaľ, program si myslí, že som zadali rôzne veci, aj keď som jasne napísal "ahoj" rovnakým spôsobom v oboch prípadoch. A teraz, prečo by to mohlo byť? No, ukázalo sa, že to všetko čas, reťazca boli trochu viac zložitejšie, než sekvencie znakov pod kapotou. V skutočnosti, reťazec je ukazovateľ alebo adresa, konkrétne adresa prvého znaku v tom, že postupnosť znakov. A tak, keď sme sa porovnať s proti t sa rovná znamienko rovná sa, že sme v skutočnosti sa pýtam, je táto adresa equal na túto adresu? A že to nebude prípad užívateľ zadal v dvoch rôznych reťazca a zavolali sme GetString dvakrát aby si ich, pretože pamäť že GetString používa na uloženie prvej reťazec môže byť tu v RAM, ale pamäti, že GetString používa na ukladanie Druhý reťazec sa deje sa tu v pamäti RAM. A samozrejme, potom tie dva kusy pamäte majú rôzne adresy ich úplne prvý znaky. Tak sa s equal na t? No, no. Ak s a t sú poukazom na rôzne kúsky pamäti, ako by to bolo tým, volanie GetString dvakrát, že to nie je, v skutočnosti, bude rovnaká. Takže sa zdá, že je pravda, že sa porovnať dva reťazce v intuitívne tak, že očakávame, znak pre charakter, budeme potrebovať ďalšiu techniku dohromady.