>> GŁOŚNIK: Chcę napisać program, który pyta użytkownika o dwóch strunach i
następnie informuje, czy te struny są takie same lub nie same.
Już zaczęło nam się tutaj dzwoni dwa razy i wywołanie printf
GetString dwukrotnie, przechowywania powrót Wartości w s i t, odpowiednio.
>> Teraz, moje instynkty porównać te dwa ciągi byłoby użyć zaznajomieni
Operator równości -
jeśli y jest równa równa t.
Potem mam zamiar iść do przodu i drukuj z "Wpisano to samo!
Innego, jeśli to nie jest prawda, jestem po prostu będzie wpisać printf ("Wpisano
różne rzeczy!
>> Bardzo prosta -
Jestem po prostu porównując s przed t, a jeśli są one równe,
drukując tyle.
Załóżmy, skompilować i uruchomić ten program.
Dodać Porównaj 0. / Porównanie 0, coś powiedzieć, hello,
powiedzieć coś, witam.
>> Niestety, program myśli mam wpisane różne rzeczy, choć
wyraźnie wpisane "hello" w ten sam sposób za każdym razem.
Teraz, dlaczego może to być?
>> Cóż, okazuje się, że wszystko Czas, struny były nieco bardziej
złożone niż ciąg znaków pod wyciągiem.
W rzeczywistości, łańcuch jest wskaźnik lub adres, w szczególności adres
od pierwszego znaku, który sekwencja znaków.
>> I tak, gdy porównamy s przed t z jednakowym znakiem równości, jesteśmy
faktycznie pytaniem, jest to adres równe równe tym adresem?
I że nie będzie to w przypadku, gdy Filmaster wpisane w dwóch różnych
smyczki i mamy nazywa GetString dwa razy się je, ponieważ pamięć
że GetString używa do przechowywania pierwszy Ciąg może być tutaj w pamięci RAM, ale
pamięci, że GetString używa do przechowywania Drugi ciąg będzie
tu być w pamięci RAM.
I oczywiście, następnie te dwa kawałki pamięci mają różne adresy
ich bardzo pierwsze znaki.
>> Tak jest y równa równa t?
Cóż, nie.
Jeśli s i t są skierowane do różnych fragmenty pamięci, tak jak byłyby przez
dzwoniąc GetString dwukrotnie, że nie są, w rzeczywistości, będzie taki sam.
Tak więc wydaje się, tak, że z porównać dwa ciągi w intuicyjny
sposób, że oczekujemy, znaków dla charakter, potrzebujemy innej techniki
całkowicie.