Witam ponownie.
W tym wykładzie chcę porozmawiać o dalszych tematach,
które możesz przestudiować.
Zasadniczo zamykamy zajęcia.
Kończymy to.
Więc nie dostaliśmy na wszystko.
Oczywiście jest to klasa dla początkujących.
Więc jest wiele zaawansowanych tematy, którymi możesz się dalej uczyć,
aby c naprawdę, naprawdę się stało świetny w programowaniu w C i chciałem tylko
wspomnieć o kilku z nich.
Więc po pierwsze, nie zrobiliśmy tego dostać się do typedefów.
Chciałbym mieć rozmawialiśmy o tym, ale jest
to bardziej zaawansowana koncepcja.
Rozmawialiśmy o wyliczeniach.
Enum to sposób tworzenie własnego typu.
Ale konkretnie w c jest słowo kluczowe o nazwie typedef i możesz
tworzyć własne typy danych.
To jest bardziej przydatne zaawansowanej koncepcji.
Zdecydowanie mógłbyś dowiedz się więcej na ten temat.
Jest o wiele więcej informacji na temat preprocesor, o którym można
się dowiedzieć, w szczególności konkatenację ciągów.
Preprocesor pamięta który działa przed kompilatorem.
Dowiedzieliśmy się o zdefiniowana instrukcja.
Dowiedzieliśmy się o kilku innych rzeczach tu i tam, ale preprocesorem
może być cała inna sekcja z dużo więcej informacji na ten temat.
Możesz go użyć w zasadzie do zoptymalizuj dużo swojego kodu, abyś mógł go
wcześniej uruchomić.
Możesz wykonywać funkcje wbudowane które działają w preprocesorze, cała
masa fajnych koncepcji.
O pustych gwiazdach jest znacznie więcej.
Puste gwiazdy, pamiętaj, duża elastyczność.
W szczególności plik malloc funkcja zwraca void star.
Moglibyśmy stworzyć funkcje, które stałyby się puste wskaźniki i przekazuj wskaźniki pustki wokół,
aby uczynić go bardziej elastycznym.
Jest o wiele więcej możemy się nad tym uczyć.
Biblioteki statyczne i obiekty udostępnione.
Nie rozmawialiśmy o tym koncepcja biblioteki.
Korzystamy z bibliotek, kiedy łączymy.
W szczególności wiele plików biblioteki
są zdefiniowane w standardowych bibliotekach c.
Ale możesz tworzyć własne biblioteki.
Stworzyliśmy programy.
Programy to procesy które działają w pamięci.
Ale biblioteki to w rzeczywistości inny kod które możesz ponownie wykorzystać w innych programach.
Na przykład standardowa biblioteka c.
Jeśli zaprogramowałeś w innych języki, zwykle są to interfejsy API, które są
dostarczane wraz z językiem.
Istnieją dwa rodzaje biblioteki, które możesz tworzyć.
Możesz stworzyć statyczny biblioteka, w której kompilujesz cały
ten kod podczas łączenia.
A następnie możesz również utworzyć udostępniony plik obiekt, w którym podczas
wykonywania programu zamierzasz wyszukuj funkcje i wywołuj je.
Dlatego biblioteki statyczne są zwykle zamykane w kropce a
i są kompilowane w czasie statycznym lub kompilowane podczas kompilowania programu.
Obiekty udostępnione to pliki typu dot so lub też, jeśli masz, możesz o nich
myśleć jako o bibliotekach DLL słyszałem o dynamicznie połączonych
bibliotekach i Visual C plus plus.
Ale wspólne przedmioty nie są czasem kompilacji.
Ponownie, jest to sposób na ponowne użycie kodu.
Moglibyśmy przestudiować te koncepcje i ja może pokazać, jak budować biblioteki statyczne,
a także obiekty współdzielone.
Makra.
Nie mieliśmy szansy porozmawiać o makro.
To jest zaawansowany temat.
Jest to uruchamiane przez preprocesor głównie do podstawiania,
podstawiania łańcuchów.
Niektóre z funkcji, które my badane są w rzeczywistości
zapisywane jako makra, podobnie jak makro assert.
Można eksplorować makra bardziej szczegółowo.
Związki.
Związki zwykle będą zgadzają się ze strukturami.
To sposób na posiadanie wielu różnych typy zwracanych danych lub różne typy elementów
członkowskich wewnątrz pliku struct, które reprezentują tę samą rzecz.
Więc możesz mieć strukturę który ma jeden element członkowski, ale ten element członkowski
może być elementem typu float i użyłbyś do tego związku.
Inne tematy służą jako wskaźniki.
Rozmawialiśmy o charakterze głównie wskaźniki, a nawet wskaźniki całkowite
i podwójne wskaźniki.
Ale tak naprawdę możesz mieć wskazówki które wskazują na różne funkcje.
W trakcie działania programu możesz wykonać jedną funkcję.
A potem następnym razem, gdy będzie działać, mógłby wykonać inną funkcję w
oparciu o dane wejściowe użytkownika czy coś takiego.
Wskaźniki funkcji to zupełnie inny temat.
Zaawansowane wskaźniki.
Wskazówek jest o wiele więcej niż to, o czym rozmawialiśmy.
Omówiliśmy podstawy wskazówki, ale o wskaźnikach moglibyśmy mówić
znacznie bardziej szczegółowo.
Istnieją rzeczywiste wskaźniki do wskaźników, więc są podwójne wskazówki i jest
to bardziej zaawansowany temat.
Zmienne argumenty funkcji.
Są to odniesienia jako funkcje wariacyjne.
Używamy funkcji printf który ma zmienną
liczbę argumentów, ale nie zdefiniowaliśmy dowolne funkcje, które mieliśmy zmienną
liczbę argumentów, mogliśmy zbadaj tę koncepcję bardzo użyteczną.
Dynamiczne łączenie.
Dzieje się tak, gdy otwierasz plik biblioteka w czasie i jest trochę inna
niż obiekt współdzielony.
Możesz otwierać biblioteki w czasie wykonywania i zwiększa wydajność i
sprawia, że Twoja wykonywalne programy mniejsze.
Więc dlm open, jest rzeczywisty wywołanie biblioteki, aby to zrobić.
Sygnały, rozwidlenie komunikacja między procesami.
To wszystko można zbadać między procesami komunikacja jest wtedy, gdy masz dwa programy,
z którymi chcą się komunikować.
Są różne sposoby że mogą się komunikować.
Mogą komunikować się za pomocą plików.
Mogą komunikować się za pośrednictwem coś, co nazywa się gniazdem.
Mogą komunikować się za pomocą rurociągów.
Istnieją różne techniki tam, ale dzieje się tak, gdy dwa procesy
chcą ze sobą rozmawiać.
Rozwidlanie jest tam, gdzie możesz stworzyć inny proces.
Są biblioteki do tworzenia inne procesy w Twoim kodzie.
Gdybyś miał stworzyć inny proces w
kodzie, miałby własną przestrzeń pamięci adresowej i może sprawić, że twój program będzie
trochę bardziej wydajny.
A potem sygnały, w które nie weszliśmy wiele, ale sygnały są używane
do debugowania w celu generowania różnych wiadomości do różnych programów.
Wątkowanie i współbieżność.
Kolejny zaawansowany temat że chcesz się uczyć.
Pozwala to na wielokrotne wykonanie punktów w programie.
Pozwala na uruchomienie kodu prawie w tym samym czasie.
Jest to więc kwestia związana z wydajnością.
Jeśli masz długo działające zadanie, to musisz zrobić w swoim programie, na
przykład monitorowanie danych lub czekanie dane, a może Twoim zadaniem jest odczytanie dużego pliku,
możesz stworzyć inny wątku, aby to zrobić, a następnie nadal wykonywać
inne części programu w połączeniu w tym samym czasie.
Gniazda.
Gniazda są używane do pracy w sieci.
Gniazda byłyby używane, gdybyś chciał aby połączyć się z innym komputerem i pobrać
dane z tego innego komputera.
Networking jest bardzo duży, ponieważ my mieć internet i wszystko inne.
Możesz więc dowiedzieć się wszystkiego gniazd i zobacz również.
Są dwie funkcje zwany setjump i longjump.
To dla przywrócenia stanu.
Moglibyśmy je zbadać dobre szczegóły więcej na temat zarządzania
pamięcią i fragmentacji.
Nie chodzi tylko o malloc, ale w ten sposób możesz zarządzać swoją pamięcią i
umieścić ją na stercie lub stosie.
Możesz upewnić się, że twój program jest trochę bardziej wydajna, więc
nie masz tak dużej fragmentacji.
Fragmentacja jest tam, gdzie masz pamięć w różnych lokalizacjach i
nie jest sekwencyjny, więc może być trudniej zajmie więcej czasu, aby sprawdzić to wspomnienie.
Możesz zmniejszyć fragmentację.
Możemy popracować nad stworzeniem programy bardziej przenośne.
Ogólnie rzecz biorąc, programy c są dość przenośne.
Ale jest więcej technik możesz użyć, aby upewnić się, że kiedy napiszesz swój program,
będzie on działał na wielu różnych systemach operacyjnych i nie
musisz go przepisywać.
Zasadniczo moglibyśmy użyć niektóre standardy posix dostępne
w c.
Możemy się upewnić, że w zależności na jakiej
innej wersji standardu c, że oni pracować w wielu standardach,
stosując określone konwencje.
Moglibyśmy również napisać takie programy bezpośrednio współpracuje z jądrem.
Pamiętaj, że jądro to mózgi systemu operacyjnego.
Jądro zawiera wszystkie sterowniki.
Zawiera wszystkie rodzaje połączeń do funkcji pamięci niższego poziomu.
Robi dużo różne informacje.
Więc jądro ma specyficzne funkcjonalność, w której możesz połączyć się
z nim w programie c.
To byłoby niskie poziom osadzonych rzeczy.
Więc moglibyśmy użyć połączeń jak kontrolki we / wy.
Moglibyśmy stworzyć sterowniki do rozmawiaj bezpośrednio ze sprzętem.
Kompilator zawiera dużo więcej informacji i różne
flagi, które możesz przekazać do kompilatora lub konsolidator, który ponownie
zwiększa wydajność programu.
Nie mieliśmy okazji dużo mówić
o wielu różnych flagach.
Rozmawialiśmy głównie o kresce wall i kilka innych podstawowych,
ale nic bardziej zaawansowanego.
Rozmawialiśmy o debugerze i jak debugować aplikacje.
Debugerem w blokach kodu był poprzez graficzny interfejs użytkownika.
Ale prawdziwa zaleta debuggera jest pod maską wykorzystuje gdb.
Gdb to debugger GNU.
Rozmawialiśmy tylko o punktach przerwania i używając go za pośrednictwem graficznego interfejsu użytkownika,
ale możesz faktycznie zrób tonę więcej z gdb.
Moglibyśmy przejść przez debugger gdb z konsoli wydawaj różne polecenia,
zrób dużo więcej z core file zrozumienie, jak odczytać
plik core przy użyciu gdb, a wiele fajnych zaawansowanych tematów.
Narzędzia do profilowania i śledzenia.
Nie mogliśmy o niektórych rozmawiać analizatory statyczne, niektóre narzędzia, które mogą analizować
kod przed tobą uruchom program, aby sprawdzić,
czy jest jakiś martwy kod lub czy jest wszelkie złe praktyki programistyczne.
A potem narzędzia do śledzenia, s trace, d trace, g profile, to
wszystkie ważne narzędzia, które możesz użyj, aby zobaczyć, aby
pomóc w debugowaniu i pomiarze wydajności lub ile pamięci używasz
lub wydajność programu.
Jest inna dodatkowa pamięć narzędzia do debugowania, takie jak valgrind.
To pomaga, gdy masz ochotę warunki wyścigu lub masz
problemy z uszkodzeniem pamięci.
Wiele razy, kiedy zarządzasz Twoja pamięć i masz przepełnienia bufora lub wycieki pamięci,
to jest bardzo, bardzo trudno je znaleźć.
Istnieją więc narzędzia, które mogą pomóc Ci znaleźć takie jak valgrind.
A więc jest wiele różnych tematy, które możesz zbadać, aby
stać się ekspertem w c.
Dotknęliśmy podstaw.
Dotknęliśmy naprawdę, naprawdę ważne rzeczy na początek.
Ale z tymi dodatkowymi tematy, możesz zostać ekspertem.
Dziękuję Ci.