>> 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.