1
00:00:00,000 --> 00:00:00,520

2
00:00:00,520 --> 00:00:03,530
>> GŁOŚNIK: Chcę napisać program, który
pyta użytkownika o dwóch strunach i

3
00:00:03,530 --> 00:00:07,170
następnie informuje, czy te struny
są takie same lub nie same.

4
00:00:07,170 --> 00:00:10,290
Już zaczęło nam się tutaj
dzwoni dwa razy i wywołanie printf

5
00:00:10,290 --> 00:00:14,520
GetString dwukrotnie, przechowywania powrót
Wartości w s i t, odpowiednio.

6
00:00:14,520 --> 00:00:17,960
>> Teraz, moje instynkty porównać te dwa
ciągi byłoby użyć zaznajomieni

7
00:00:17,960 --> 00:00:19,160
Operator równości -

8
00:00:19,160 --> 00:00:22,070
jeśli y jest równa równa t.

9
00:00:22,070 --> 00:00:28,120
Potem mam zamiar iść do przodu i drukuj
z "Wpisano to samo!

10
00:00:28,120 --> 00:00:35,190
Innego, jeśli to nie jest prawda, jestem po prostu
będzie wpisać printf ("Wpisano

11
00:00:35,190 --> 00:00:37,880
różne rzeczy!

12
00:00:37,880 --> 00:00:38,850
>> Bardzo prosta -

13
00:00:38,850 --> 00:00:41,820
Jestem po prostu porównując s przed
t, a jeśli są one równe,

14
00:00:41,820 --> 00:00:43,250
drukując tyle.

15
00:00:43,250 --> 00:00:45,450
Załóżmy, skompilować i uruchomić ten program.

16
00:00:45,450 --> 00:00:51,950
Dodać Porównaj 0. / Porównanie
0, coś powiedzieć, hello,

17
00:00:51,950 --> 00:00:54,200
powiedzieć coś, witam.

18
00:00:54,200 --> 00:00:56,870
>> Niestety, program myśli mam
wpisane różne rzeczy, choć

19
00:00:56,870 --> 00:00:59,530
wyraźnie wpisane "hello"
w ten sam sposób za każdym razem.

20
00:00:59,530 --> 00:01:00,850
Teraz, dlaczego może to być?

21
00:01:00,850 --> 00:01:03,750
>> Cóż, okazuje się, że wszystko
Czas, struny były nieco bardziej

22
00:01:03,750 --> 00:01:06,780
złożone niż ciąg znaków
pod wyciągiem.

23
00:01:06,780 --> 00:01:11,450
W rzeczywistości, łańcuch jest wskaźnik lub
adres, w szczególności adres

24
00:01:11,450 --> 00:01:14,640
od pierwszego znaku, który
sekwencja znaków.

25
00:01:14,640 --> 00:01:18,640
>> I tak, gdy porównamy s przed t
z jednakowym znakiem równości, jesteśmy

26
00:01:18,640 --> 00:01:23,200
faktycznie pytaniem, jest to adres
równe równe tym adresem?

27
00:01:23,200 --> 00:01:26,850
I że nie będzie to w przypadku, gdy
Filmaster wpisane w dwóch różnych

28
00:01:26,850 --> 00:01:30,370
smyczki i mamy nazywa GetString dwa razy
się je, ponieważ pamięć

29
00:01:30,370 --> 00:01:34,480
że GetString używa do przechowywania pierwszy
Ciąg może być tutaj w pamięci RAM, ale

30
00:01:34,480 --> 00:01:37,120
pamięci, że GetString używa do przechowywania
Drugi ciąg będzie

31
00:01:37,120 --> 00:01:38,760
tu być w pamięci RAM.

32
00:01:38,760 --> 00:01:42,380
I oczywiście, następnie te dwa kawałki
pamięci mają różne adresy

33
00:01:42,380 --> 00:01:44,220
ich bardzo pierwsze znaki.

34
00:01:44,220 --> 00:01:46,120
>> Tak jest y równa równa t?

35
00:01:46,120 --> 00:01:46,885
Cóż, nie.

36
00:01:46,885 --> 00:01:50,510
Jeśli s i t są skierowane do różnych
fragmenty pamięci, tak jak byłyby przez

37
00:01:50,510 --> 00:01:54,140
dzwoniąc GetString dwukrotnie, że nie są,
w rzeczywistości, będzie taki sam.

38
00:01:54,140 --> 00:01:57,700
Tak więc wydaje się, tak, że z
porównać dwa ciągi w intuicyjny

39
00:01:57,700 --> 00:02:01,050
sposób, że oczekujemy, znaków dla
charakter, potrzebujemy innej techniki

40
00:02:01,050 --> 00:02:02,300
całkowicie.

41
00:02:02,300 --> 00:02:03,902