Hallo und willkommen zurück.
In dieser Vorlesung möchte ich um über einige weitere Themen zu sprechen,
die Sie studieren können.
Wir beenden im Grunde die Klasse.
Wir packen es ein.
Und so haben wir nicht bekommen alles abdecken.
Offensichtlich ist es eine Anfängerklasse.
Es gibt also viele Fortgeschrittene Themen, die Sie weiter studieren
können, damit c wirklich, wirklich wird Super bei der C-Programmierung, und ich wollte nur
ein paar davon erwähnen.
Also haben wir es zuerst nicht getan in typedefs einsteigen.
Ich hätte gerne gehabt Ich habe darüber gesprochen, aber es
ist eher ein fortgeschrittenes Konzept.
Wir haben über Aufzählungen gesprochen.
Und Enum ist ein Weg von Erstellen Sie Ihren eigenen Typ.
Aber speziell in c gibt es ein Schlüsselwort namens typedef und Sie können
Ihre eigenen Datentypen erstellen.
Das ist sehr nützlich, mehr eines fortgeschrittenen Konzepts.
Das könntest du definitiv Erfahren Sie mehr darüber.
Es gibt viel mehr Informationen über die Präprozessor, den Sie kennenlernen
können, insbesondere die Verkettung von Zeichenfolgen.
Der Präprozessor erinnert sich das läuft vor dem Compiler.
Wir haben etwas über das gelernt definierte Aussage.
Wir haben ein paar andere Dinge gelernt hier und da, aber
der Präprozessor kann ein ganz anderer Abschnitt mit sein viel mehr Informationen dazu.
Sie können es grundsätzlich dazu verwenden Optimieren Sie einen Großteil Ihres Codes, damit Sie ihn
vorher ausführen können.
Sie können Inline-Funktionen ausführen das läuft im Präprozessor, alles
ein paar nette Konzepte.
Es gibt viel mehr über leere Sterne.
Leere Sterne, denk dran, viel Flexibilität.
Insbesondere das Malloc Funktion gibt einen leeren Stern zurück.
Wir könnten Funktionen schaffen, die nichtig sind Zeiger und geben Sie die leeren Zeiger
weiter, um sie flexibler zu machen.
Es gibt noch viel mehr wir können darüber studieren.
Statische Bibliotheken und gemeinsam genutzte Objekte.
Wir haben nicht darüber gesprochen Konzept einer Bibliothek.
Wir verwenden Bibliotheken, wenn wir verlinken.
Insbesondere viele der Bibliotheken
sind in den c Standardbibliotheken definiert.
Sie können jedoch Ihre eigenen Bibliotheken erstellen.
Wir haben Programme erstellt.
Programme sind Prozesse das läuft im Speicher.
Aber Bibliotheken sind eigentlich anderer Code dass Sie in anderen Programmen wiederverwenden können.
So zum Beispiel die c-Standardbibliothek.
Wenn Sie in anderen programmiert haben Sprachen sind normalerweise APIs, die mit
der Sprache geliefert werden.
Es gibt zwei Arten von Bibliotheken, die Sie erstellen können.
Sie können eine statische erstellen Bibliothek, in der Sie den
gesamten Code beim Verknüpfen kompilieren.
Und dann können Sie auch eine gemeinsame erstellen Objekt, wohin Sie während
der Ausführung des Programms gehen Funktionen nachschlagen und aufrufen.
Daher werden statische Bibliotheken normalerweise beendet in einem Punkt a und sie
werden zur statischen Zeit kompiliert oder sie werden kompiliert in, wenn Sie das Programm kompilieren.
Freigegebene Objekte sind Punktdateien oder sie sind auch Sie können sie als DLLs betrachten,
wenn Sie haben jemals von der dynamischen Verknüpfung von Bibliotheken
und Visual C Plus Plus gehört.
Aber die gemeinsamen Objekte sind keine Kompilierungszeit.
Auch hier ist es eine Möglichkeit, Code wiederzuverwenden.
Wir könnten diese Konzepte und ich studieren könnte Ihnen zeigen, wie Sie statische Bibliotheken
sowie gemeinsam genutzte Objekte erstellen.
Makros.
Wir haben die Chance nicht bekommen über ein Makro sprechen.
Dies ist ein fortgeschrittenes Thema.
Dies wird vom Präprozessor ausgeführt hauptsächlich Substitution
durchführen, String-Substitution.
Einige der Funktionen, die wir studiert werden tatsächlich
als Makros geschrieben, wie das Assert-Makro.
Makros können erkundet werden viel detaillierter.
Gewerkschaften.
Gewerkschaften werden in der Regel gehe mit Strukturen.
Es ist eine Möglichkeit, mehrere verschiedene zu haben Arten von zurückgegebenen Daten oder verschiedene Arten
von Elementelementen innerhalb von a Struktur, die dasselbe darstellen.
Sie könnten also eine Struktur haben das hat ein Mitglied, aber dieses Mitglied kann
ein Float eingeben und Sie würden Union verwenden, um das zu tun.
Andere Themen funktionieren Zeiger.
Wir haben über Charakter gesprochen hauptsächlich Zeiger und sogar ganzzahlige
Zeiger und Doppelzeiger.
Aber Sie können tatsächlich Zeiger haben das deutet auf verschiedene Funktionen hin.
Also, während Ihr Programm läuft, Sie können eine Funktion ausführen.
Und dann, wenn es das nächste Mal läuft, Es könnte eine andere
Funktion basierend auf Benutzereingaben ausführen oder etwas ähnliches.
Funktionszeiger sind ein ganz anderes Thema.
Erweiterte Zeiger.
Es gibt viel mehr zu Zeigern als das, was wir besprochen haben.
Wir haben die Grundlagen von besprochen Zeiger, aber wir könnten
viel detaillierter über Zeiger sprechen.
Es gibt tatsächliche Zeiger auf Zeiger, Es gibt also doppelte Zeiger, und
das ist ein fortgeschritteneres Top-Thema.
Variable Argumente für Funktionen.
Auf diese wird Bezug genommen als verschiedene Funktionen.
Wir verwenden die Funktion printf das hat eine variable
Anzahl von Argumenten, aber wir haben nicht definiert Alle Funktionen, für die wir eine variable
Anzahl von Argumenten hatten, konnten wir Erforschen Sie dieses Konzept sehr nützlich.
Dynamische Verknüpfung.
Dies ist, wenn Sie eine öffnen Bibliothek zur Zeit und es ist ein wenig anders als ein
gemeinsam genutztes Objekt.
Sie können Bibliotheken öffnen zur Laufzeit und es erhöht die Leistung
und es macht Ihre ausführbare Programme kleiner.
Also offen, es gibt eine tatsächliche Bibliotheksaufruf, um dies zu tun.
Signale, Gabeln Interprozesskommunikation.
Dies alles kann prozessübergreifend untersucht werden Kommunikation ist, wenn Sie zwei Programme haben,
die sie kommunizieren möchten.
Es gibt verschiedene Wege dass sie kommunizieren können.
Sie können über Dateien kommunizieren.
Sie können über kommunizieren so etwas wie eine Steckdose.
Sie können über Rohrleitungen kommunizieren.
Es gibt verschiedene Techniken dort, aber es ist, wenn zwei Prozesse
miteinander sprechen wollen.
Gabeln ist, wo Sie können Erstellen Sie einen anderen Prozess.
Es gibt Bibliotheken zu erstellen andere Prozesse in Ihrem Code.
Wenn Sie einen anderen erstellen würden Prozess
in Ihrem Code, würde es einen eigenen Adressspeicherraum haben und es kann Ihr Programm ein
bisschen effizienter machen.
Und dann Signale, auf die wir nicht eingegangen sind viele, aber Signale werden
verwendet, um zu debuggen, um verschiedene zu erzeugen Nachrichten an verschiedene Programme.
Threading und Parallelität.
Ein weiteres fortgeschrittenes Thema dass du studieren willst.
Dies ermöglicht eine mehrfache Ausführung Punkte in Ihrem Programm.
Sie können damit Code ausführen fast zur gleichen Zeit.
Es ist also eine Sache vom Typ Effizienz.
Wenn Sie eine lange laufende Aufgabe haben, die Sie müssen in Ihrem Programm beispielsweise
Daten überwachen oder warten Daten oder vielleicht ist Ihre Aufgabe das Lesen einer riesigen Datei, können
Sie eine andere erstellen Thread, um das zu tun und dann noch
andere Teile Ihres Programms auszuführen in Verbindung zur gleichen Zeit.
Steckdosen.
Sockets werden für die Vernetzung verwendet.
Steckdosen würden verwendet, wenn Sie wollten um eine Verbindung zu einem anderen Computer herzustellen und
Daten von diesem anderen Computer abzurufen.
Networking ist sehr, sehr groß, weil wir habe das Internet und alles andere.
So können Sie alles über lernen Steckdosen und sehen auch.
Es gibt zwei Funktionen Setjump und Longjump genannt.
Das ist für die Wiederherstellung des Zustands.
Wir könnten diese in studieren Gute Details mehr zur
Speicherverwaltung und Fragmentierung.
Hier geht es nicht nur um Malloc, sondern Auf diese Weise können Sie Ihren Speicher verwalten und
auf den Heap oder den Stapel legen.
Sie können sicherstellen, dass Ihr Programm ist etwas effizienter, so dass
Sie nicht so viel Fragmentierung haben.
In der Fragmentierung haben Sie Gedächtnis an verschiedenen Orten, und es ist
nicht sequentiell, so dass es schwieriger sein kann Nehmen Sie sich mehr Zeit, um diese Erinnerung nachzuschlagen.
Sie können die Fragmentierung reduzieren.
Wir können daran arbeiten, das zu machen Programme tragbarer.
Im Allgemeinen c Programme sind ziemlich tragbar.
Aber es gibt noch mehr Techniken Sie können verwenden, um sicherzustellen, dass Ihr Programm beim
einmaligen Schreiben ausgeführt wird auf vielen verschiedenen Betriebssystemen und Sie müssen
es nicht neu schreiben.
Wir könnten im Wesentlichen verwenden Einige der Posix-Standards, die in
c verfügbar sind.
Wir können das abhängig machen auf welche unterschiedliche
Version des c-Standards, dass sie Arbeiten Sie in mehreren Standards unter
Verwendung bestimmter Konventionen.
Wir könnten auch Programme schreiben, die direkte Schnittstelle zum Kernel.
Denken Sie daran, der Kernel ist der Gehirne des Betriebssystems.
Der Kernel enthält alle Treiber.
Es enthält alle Arten von Anrufen Speicherfunktionen auf niedrigerer Ebene.
Es macht viel andere Informationen.
Der Kernel hat also bestimmte Funktionalität, mit der Sie in Ihrem
c-Programm eine Schnittstelle herstellen können.
Das wäre niedrig Level Embedded Zeug.
Wir könnten also Anrufe gebrauchen wie IO-Steuerelemente.
Wir könnten Treiber dazu erstellen Sprechen Sie direkt mit der Hardware.
Der Compiler enthält noch viel mehr und verschiedene Flags,
die Sie an den Compiler oder übergeben können der Linker, der Ihr
Programm wieder effizienter macht.
Wir hatten keine Chance dazu Sprechen Sie
viel über viele verschiedene Flaggen.
Wir haben hauptsächlich über den Armaturenbrett gesprochen Wand und einige andere
grundlegende, aber nichts weiter fortgeschrittenes.
Wir haben über den Debugger gesprochen und wie man Anwendungen debuggt.
Der Debugger in Codeblöcken war über die grafische Benutzeroberfläche.
Aber der wahre Vorteil eines Debuggers ist unter der Haube es verwendet gdb.
Gdb ist der Gnu-Debugger.
Und wir haben nur über Haltepunkte gesprochen und verwenden Sie es über die grafische Benutzeroberfläche, aber
Sie können mache tatsächlich eine Tonne mehr mit gdb.
Wir könnten den GDB-Debugger durchgehen Geben Sie über die Konsole verschiedene Befehle
aus, machen Sie viel mehr mit dem Kerndatei Verstehen, wie
die Kerndatei mit gdb gelesen wird, a viele schöne fortgeschrittene Themen dort.
Profiling- und Tracing-Tools.
Über einige konnten wir nicht reden statische Analysatoren, einige Tools, die Ihren Code vor Ihnen
analysieren können Führen Sie Ihr Programm aus, um festzustellen,
ob toter Code vorhanden ist oder ob dieser vorhanden ist irgendwelche schlechten Programmierpraktiken.
Und dann auch noch Tracing-Tools, s trace, d trace, g profile, das sind alles wichtige Werkzeuge,
die Sie können Verwenden Sie diese Option, um zu sehen, wie Sie
Fehler beheben und die Effizienz messen können wie viel Speicher Sie verwenden oder
wie leistungsfähig Ihr Programm ist.
Es gibt noch anderen zusätzlichen Speicher Debugging-Tools wie Valgrind.
Dies hilft, wenn Sie möchten Rennbedingungen oder Sie haben
Probleme mit der Speicherbeschädigung.
Oft, wenn Sie verwalten Ihr Speicher und Sie haben Pufferüberläufe oder Speicherlecks, es
ist sehr sehr schwer zu finden.
Es gibt also Werkzeuge, die das können helfen Ihnen, solche wie Valgrind zu finden.
Und so gibt es viele verschiedene Themen, die Sie erkunden können,
um Experte für c zu werden.
Wir haben die Grundlagen angesprochen.
Wir haben das wirklich, wirklich angesprochen wichtige Dinge, um loszulegen.
Aber mit diesen zusätzlichen Themen können Sie ein Experte werden.
Vielen Dank.