SPEAKER: Idemo napisati program koji traži od korisnika za dvije žice i zatim izvješća jesu li ti žice su jednaki ili nisu isti. Već sam nas započela ovdje nazivajući printf dva puta i pozivom GetString dva puta, spremanje povratak vrijednosti s i t, respektivno. Sada, moji instinkti usporediti ta dva žice da bi se koristiti upoznati Operator jednakosti - ako je jednako jednako t. Onda ću ići naprijed i ispis out "Upisali ste istu stvar! Inače, ako to nije istina, ja sam jednostavno će se upisati printf ("Vi upisali različite stvari! Prilično jednostavan - Ja sam jednostavno uspoređujući s. protiv t, a ako su oni jednaki, ispis koliko. Idemo sastaviti i pokrenuti ovaj program. Napravite usporedbu 0. / Usporedbu 0, nešto reći, hello, nešto reći, bok. Nažalost, program misli da sam upisali različite stvari, iako sam jasno upisali "Hello" isti način oba puta. Sada, zašto bi to moglo biti? Pa, ispada da je sve to Vrijeme, žice su malo više kompleks od niza znakova ispod poklopca motora. U stvarnosti, niz je pokazivač ili adresa, posebno adresa na prvi znak u koji niz znakova. I tako, kada usporedimo s. protiv t s jednakim znakom jednakosti, mi smo zapravo pita, je li to adresa jednaka jednaka na ovu adresu? A to neće biti slučaj ako Korisnik je upisali u dva različita žice i mi smo pozvani GetString dva puta kako bi ih dobili, jer je memorija da GetString koristi za pohranu prvi Niz bi moglo biti ovdje u RAM-a, ali memorije koji GetString koristi za pohranu Drugi niz ide biti ovdje u RAM. I naravno, dakle, ta dva komadi memorije imaju različite adrese za njihov prvi likovi. Tako je s jednako jednako t? Pa, nema. Ako je i t ukazuju na različite komadi sjećanja, kao što bi se po pozivom GetString dva puta, oni nisu, Zapravo, bit će isto. Dakle, čini se da je slučaj da se usporediti dva konce u intuitivno Način na koji smo očekivali, znak za karakter, treba nam još jednu tehniku uopce.