Witam i witam ponownie.
Jesteśmy w nowej sekcji.
W tej sekcji będziemy porozmawiaj o ciągach znaków.
Prawdopodobnie słyszałeś, jak mówię ciąg słów dość często w całej klasie,
a ty mógł być trochę zdezorientowany.
Ciąg to tak naprawdę tylko słowo.
To jest coś w załączeniu w cudzysłowach.
Porozmawiamy o tym, jak możemy przechowuj ciągi w tablicach znaków.
Tak więc do tego momentu jesteśmy dość dobrze znamy pojedynczy
znak, typ danych char lub typ danych „opieka”, jak chcesz aby to wymówić. Wiemy, co to jest, ale tak naprawdę nie
nauczyliśmy się słów.
Aby przypisać pojedynczy znak do zmienna char, znak
jest ujęty w para pojedynczych cudzysłowów.
Jesteśmy z tym zaznajomieni.
Dowiedzieliśmy
się wszystkiego o tym. W tym przykładzie znak plus równa się plus wewnątrz pojedynczych cudzysłowów.
Ważna rzecz to pojedyncze cudzysłowy.
Tam też się tego nauczyłeś to rozróżnienie między
pojedynczymi cudzysłowami a podwójnymi cudzysłowami.
Więc jeśli wstawisz zmienną ze znakiem plus i
przypisujesz mu coś w podwójnych cudzysłowach, a znak plus jest typu char, to
nie zadziała, ponieważ możesz przypisać tylko pojedyncze znaków do typu danych char.
Stała łańcuchowa lub literał łańcuchowy to sekwencja znaków lub symboli
w podwójnych cudzysłowach.
Więc teraz są podwójne cudzysłowy przyjdzie nowa sztuka.
Cokolwiek pomiędzy tymi podwójnymi cudzysłowy są interpretowane przez kompilator
jako ciąg znaków.
I tak naprawdę może być znaki alfanumeryczne, mogą to
być znaki specjalne, ale tak jest zwykle tworzą słowa, które można
traktować jako tekst.
Możesz mieć spacje.
Ale wszystko podwójnie cudzysłowy to ciąg znaków.
Za każdym razem, gdy wyświetlałeś komunikat
wykorzystujący funkcję printf, zdefiniowaliśmy plik wiadomość jako ciąg znaków.
Pamiętaj printf, pierwszy argument umieściliśmy tam jakiś tekst i
mamy specyfikatory formatu.
To jest spółgłoska struna.
Słyszysz również termin ciąg dosłownie to to samo.
Więc mówimy print f to jest ciąg wszystko pomiędzy tymi
podwójnymi cudzysłowami jest stałą łańcuchową i możemy umieścić to w jednej lub dwóch liniach.
Zauważysz też, że możesz mają instrukcje print, które mają
sekwencje ucieczki z ukośnikiem odwrotnym n. Teraz ten trzeci jest całkiem fajny, co
za chwilę wyjaśnię.
Ale najważniejsze jest to, że masz aby
zrozumieć różnicę między pojedynczymi cudzysłowami a podwójnymi cytaty i co tam jest w środku.
W podwójnych cudzysłowach masz struny.
Dzięki pojedynczym cudzysłowom masz postacie.
Istnieją dwa rodzaje stałych.
W tym trzecim przykładzie plik printf gdzie mamy cztery, a następnie
ukośnik odwrotny, a następnie pojedynczy cudzysłów.
Jeśli tak naprawdę chcesz wyświetlić pojedynczy cudzysłów
jako wyjście, musisz go uciec.
I możesz uciec od specjalnych znaków, używając odwrotnego ukośnika.
Więc w trzecim przykładzie tak faktycznie
zamierzasz wydrukować cztery podwójne cudzysłowy, które napiszesz, a potem kolejny podwójny cudzysłów.
Więc kompilator interpretuje jawną wersję podwójny cudzysłów bez poprzedzającego odwrotnego ukośnika
jako separatora ciągu.
Za każdym razem, gdy używasz double cytuj to początek i koniec łańcucha, ale
co by było, gdybyś chciał wyświetlić go, musisz po prostu umieścić
przed nim ukośnik odwrotny.
I powie kompilatorowi „hej” w rzeczywistości nie kończy łańcucha.
To jest coś, czego chcemy do wyświetlenia lub coś,
czego chcemy użyć jako tego znaku.
Musisz także skorzystać z ucieczki sekwencję, jeśli chcesz
również wykonać odwrotny ukośnik, ponieważ ukośnik odwrotny to sekwencja ucieczki.
Więc kiedy zobaczysz odwrotny ukośnik ukośnik odwrotny, faktycznie wyświetlasz ten
ukośnik odwrotny w funkcji printf.
Jeśli zobaczysz to gdziekolwiek indziej, przypisujesz ukośnik odwrotny do zmiennej lub w
sposób, w jaki jest ona używana.
Ale nastąpił sam ukośnik odwrotny przez inny ukośnik odwrotny spowoduje usunięcie ciągu
z ukośnikiem odwrotnym.
I znowu odwrotny ukośnik i ciąg znaków zawsze
sygnalizuje początek sekwencji ucieczki.
Więc jeden sam w sobie jest nie będzie wyświetlany.
To są znaki specjalne.
Więc kiedy jesteś w cudzysłowie, możesz zobaczyć ukośniki odwrotne, aby uniknąć
znaków specjalnych a nawet sam ukośnik odwrotny.
Oto jak ciąg jest w pamięci.
Ciąg w pamięci to każdy pojedynczy znak jest
tutaj reprezentowany przez bit.
A więc jeśli masz ciąg nazywany to jest ciągiem, zobaczysz, gdzie
przestrzeń ma coś w pamięci.
A także powinieneś zauważyć o godz koniec z odwrotnym ukośnikiem zero, który
jest terminatorem zerowym o którym będziemy rozmawiać.
Ale dla drugiej struny znowu widzisz wszystko, co jest w pamięci.
Nawet ukośnik odwrotny n który oznacza, że nowa linia jest w pamięci.
A potem dla ciebie dobrze, będziesz zauważ, że cytat jest w pamięci.
Ale odwrotny ukośnik nie jest.
Ponieważ ukośnik odwrotny ogranicza cytat.
To wymyka się cytatowi.
A więc tak to wygląda w pamięci.
Powinieneś zauważyć, że string w pamięci zawsze ma co najmniej jeden bajt
więcej dla tego ukośnika odwrotnego zero, czyli znak null.
Wygląda również jak diagram na dole jest nieprawidłowa.
Zauważysz, że „ty” nie jest tutaj pokazane więc po cudzysłowie cudzysłów nie widzisz
tam siebie. Powinien być gdzieś tam i to
w pewnym sensie dotyczy tego, że gdzieś tam są naprawdę po prostu pokazując, że
są to wartości ASCII poniżej i tak jest tylko pokazując, a nie pokazując, ale byłbyś
tuż przed prawym.
I o tym chcę porozmawiać o jest to znak zerowy.
To wyjątkowa postać z wartością kodu zero.
Jest dodawany na końcu każdego ciągu aby kompilator wiedział, gdzie
się kończy, a także kiedy go uruchomisz.
Ta postać jest znana jako znak null i
nie umieszczasz w nim po prostu zera możesz wstawić zero ukośnik odwrotny.
I to było w tym poprzedni slajd na samym końcu.
I może być wszędzie faktycznie w pamięci.
I w zależności od tego, gdzie się znajduje pamięci, funkcja będzie iść
i patrzeć, aż to zobaczy odwrotnym ukośnikiem zero i może go wyświetlić lub może nim
manipulować, jeśli jesteś używając różnych funkcji tekstowych.
To bardzo ważne ten pusty znak.
Ciąg jest zawsze zakończony znakiem null.
Więc długość łańcucha wynosi zawsze o jeden większy niż liczba
znaków w ciągu.
To stanie się bardzo ważne kiedy używamy tablic znaków i
określamy rozmiar tablica rozmiar tablicy zawsze będzie o jeden większy niż
jak wiele znaków, które chcesz przechowywać z powodu
tego znaku zerowego.
Mamy też pojęcie null o którym tak naprawdę nie
rozmawialiśmy zbyt szczegółowo.
Zwykle wchodzi w grę kiedy mówimy
o wskaźnikach, ale nie mylimy wartości zerowej znak ze słowem kluczowym o wartości null.
Więc w jednym z zawierają nagłówki, których możesz użyć.
A to jest symbol tego reprezentuje adres pamięci, który
do niczego się nie odwołuje.
Więc używasz go, kiedy ty kiedy używasz wskaźników.
Znak zerowy jest sprawiedliwy terminator ciągu.
Porozmawiamy więcej o null, kiedy mów o wskazówkach, ale upewnij się, że
rozumiesz różnicę między nimi znak null i słowo kluczowe null.
Możesz dodać znak odwrotnego ukośnika zero jawnie na końcu łańcucha,
co spowoduje utworzenie dwóch ciągów i Pokażę ci, jak to zrobić, gdy będziemy
mówić o definiowaniu tablic znaków.
Oto przykład z terminator zerowy.
Mamy tu wydruk f i mówimy znak, a następnie odwrotny
ukośnik zero, który kończy ciąg.
Więc co się stanie, jeśli ty skompiluj
i uruchom ten program, wynik,
który otrzymasz, to pierwsza linia będzie znakiem, a następnie odwrotnym ukośnikiem o będzie to, że to się
skończy i tylko pierwsza część ciąg zostanie wyświetlony.
Nie będzie więcej wyjście, ponieważ print uważa, że jest
to koniec łańcucha.
Więc po prostu wypisuje znak.
Wyjście zakończy się po te pierwsze dwa słowa, ponieważ
funkcja raz przestaje wyprowadzać osiąga znak null.
Więc drugi lewy ukośnik zero na koniec łańcucha, więc nawet jeśli
nie widzisz odwrotnego ukośnika zero tutaj, tuż przed końcowym
podwójnym cudzysłowem, zaraz po kropce łańcucha, wciąż jest jeden, ale
nigdy nie zostanie osiągnięty.
Więc istnieje niejawny terminator zerowy na końcu łańcucha i printf, aby
wiedział, gdzie się zakończyć.
A jeśli dodasz kolejny, to tylko wyświetlą się do tego pierwszego.
Więc to pierwszy terminator zerowy znaleziony w serii znaków
zawsze oznacza koniec łańcucha.
Więc zrozum te znaki puste.
To był tylko krótki przegląd opisać, czym jest
ciąg i zrozumieć to ciągi znaków są w cudzysłowach.
Chcę też opisać znak zerowy.
W następnym wykładzie będziemy zrozumieć, jakie są ciągi znaków,
jeśli chodzi o sposób tworzenia te różnią się tym jednym
typem zmiennej do przechowywania ciągów.
Dziękuję Ci.