C Programmiersprache 1 - Informationen zur Kompilierungszeit
C Programmiersprache
Hallo Freunde, in diesem Artikel werde ich über die Details und Feinheiten der Programmiersprache C sprechen. Es wird ein langfristiger Artikel sein. Ich werde versuchen, so viel wie möglich einzugeben und die Zeigerlogik so einfach wie möglich zu erklären.
Warum sollten wir C lernen?
Programmiersprachen bestehen aus einem Werkzeug, das auf dem Weg zur Lösung des Problems verwendet wird. Mit jeder Programmiersprache kann das X-Problem gelöst werden. Unabhängig davon, welche Sprache zur Lösung des X-Problems geeignet ist, kann dieses Problem diskutiert werden. Bestimmte Programmiersprachen sind entstanden, um bestimmte Probleme zu lösen. Wie Sie im Artikel sehen werden, ist der Grund für die Entstehung der C-Sprache, dass UNIX entwickelt werden soll. Mit anderen Worten, wir können sagen, dass jede Sprache bestimmte Verwendungszwecke hat. Die Programmiersprache C arbeitet sehr schnell, da sie der symbolischen Maschinensprache am nächsten kommt. Es ist die schnellste Sprache auf dem Markt. Wie Sie diesem Satz entnehmen können, sollten wir diese Sprache verwenden, wenn die Geschwindigkeit kritisch ist. Eingebettete Systeme, Systemprogramme, Betriebssysteme, autonome Fahrzeuge, Smart-Home-Systeme. Wir können sagen, dass C / C ++ ein Muss in der Welt dieser Anwendungsbereiche ist.
Welchen Vorteil wird C haben?
Wenn Sie C zuerst kennen, können Sie die Programmierlogik viel besser verstehen als in anderen Sprachen. Der C-Lernende muss die Algorithmen entwickeln, für die er denkt, da es nicht viele Funktionen gibt. Kurz gesagt, das Lernen von C bietet die Möglichkeit, Algorithmen zu entwickeln. In dieser C-Sprache, die in direktem Zusammenhang mit Ram steht, können wir mit Ram die Themen wie Computerarbeitsarchitektur viel besser verstehen. Da alles in C-Sprache dem Entwickler überlassen bleibt, wurde ein Konzept namens Dynamic Memory Management erstellt. Mit diesem Konzept können wir den Heap-Stack-Bereich genauer kennenlernen. Die meisten Sprachen auf dem Markt sind von der C-Sprache inspiriert. C wird nie alt, es werden immer C / C ++ - Sprachen benötigt.
Kurz zusammengefasst;
* Die Fähigkeit Probleme zu lösen
* Computerarbeitsarchitektur
* Compiler-Arbeitslogik
* Verstehen Sie diese Sprachen leichter, wenn Sie zu anderen Sprachen wechseln
* Fähigkeit, an eingebetteten Systemen zu arbeiten
* Betriebssysteme näher kennenlernen (Arbeitslogik)
Geschichte der C-Sprache
Die Programmiersprache C wurde 1970-1971 als Nebenprodukt bei der Entwicklung des UNIX-Betriebssystems im Labor von AT & T Bell entwickelt. AT & T arbeitete dann an einem Betriebssystemprojekt namens Multics. AT & T zog sich aus diesem Projekt zurück und machte sich daran, eigene Betriebssysteme zu schreiben. Dieses Betriebssystem wurde ein Wortspiel über Multics gemacht und UNIX genannt. Zu dieser Zeit wurden Betriebssysteme in symbolischer Maschinensprache geschrieben. Ken Thompson hat die Programmiersprache B entwickelt, um die Sache zu vereinfachen. In den folgenden Jahren entwickelte Dennis Ritchie dies zu C. Das UNIX-Betriebssystem wurde 1973 mit C am Anfang neu geschrieben. Es war das erste Mal, dass ein Betriebssystem mit einer fortgeschrittenen Programmiersprache geschrieben wurde. Kurz gesagt, dieses Ereignis ist in der Geschichte der Programmierung revolutionär. In den 1980er Jahren brachte IBM seine ersten PCs auf den Markt. 1978 wurde 'The C Programming Language' von Dennis Ritchie und Brian Kernigan geschrieben. Die Programmiersprache C war die am häufigsten in PCs verwendete Sprache.
Klassifikation der Rogramm-Ingenue-Sprachen nach Stufen
Das Kriterium des Niveaus in Programmiersprachen repräsentiert die Nähe der Programmiersprache zur menschlichen Wahrnehmung. Hochsprachen sind die Sprachen, die der menschlichen Wahrnehmung am nächsten kommen, und sie sind leicht zu lernen. Niedrigsprachige Sprachen hingegen sind die am weitesten entfernten Sprachen der menschlichen Wahrnehmung und schwer zu lernen. Die Sprache der niedrigsten Ebene ist die Maschinensprache. Dieses System wird auch als Binärsystem bezeichnet. Wir sprechen von Codes mit nur 1 und 0, und Sie können mehr oder weniger erraten, wie schwierig und mühsam das Schreiben ist. Über dieser Sprache befindet sich eine Assemblersprache. Obwohl die Assemblierung einfacher ist als die Maschinensprache, ist es immer noch schwierig, eine Sprache für Personen zu erkennen und zu codieren. Darüber hinaus gibt es eine C-Sprache. Die C-Sprache ist näher an der englischen Sprache, aber mit ihren einfachen mathematischen Operationsmarkierungen und einfachen Schlüsselwörtern ist sie eine viel verständlichere Sprache (im Vergleich zur Assemblersprache).
COMPILE (Kompilieren)
Compile ist ein englisches Wort. Auf Deutsch bedeutet es kompilieren. C ist eine Sprache, die kompiliert werden muss. Das Betriebssystem kann den Code, der aus den von uns geschriebenen englischen Wörtern besteht, nicht verstehen. Es muss diesen Code kompilieren und in Codeteile konvertieren, die es verstehen wird. Wenn wir einen C-Code kompilieren, wird er zuerst mit Hilfe des Assemblers in Assembler-Code konvertiert und dann in Maschinencode konvertiert, den wir Binärcode nennen. Jetzt versteht das Betriebssystem, welchen Code wir geschrieben haben.
Der heute am häufigsten verwendete Compiler ist der Compiler namens GCC. Es besteht aus den Initialen der Wörter GNU C Compiler. Es gibt auch mehrere Compiler auf der Microsoft-Seite.
IDE-KONZEPT
Normalerweise sind Compiler Programme, die über die Befehlszeile ausgeführt werden. Der Code wird in der Editorumgebung geschrieben, dieser Code wird auf dem Terminal kompiliert. Die Wahrheit ist so. Heute ist ein Konzept namens IDE entstanden. Es besteht aus den Initialen der Wörter Integrated Development Environment. Der Grund für das Herauskommen von IDEs besteht darin, das Programm in den Editor zu schreiben und es dann auf dem Terminalbildschirm zu kompilieren. Wenn wir eine IDE auf unserem Computer installieren, wird ein Compiler damit installiert. IDE ist eigentlich kein Compiler. Es ist ein Programm, das es uns leichter macht, Code zu schreiben und zu kompilieren. Es gibt Schaltflächen wie Kompilieren und Ausführen. Wenn es sich nicht um einen Compiler handelt, können Sie sagen, was die Kompilierungsschaltfläche bewirkt. Wenn wir diese Taste drücken, wird die Kompilierung manuell am Terminal entfernt. Das Programm im Hintergrund erledigt dies für uns.
Vorprozess
Bevor unser C-Programm kompiliert wird, durchläuft es einen Prozess namens Vorbehandlung. Dieser Prozess interpretiert die Zeilen, die mit dem # (Pfund) -Zeichen oben im Programm beginnen. Nachdem diese Zeilen interpretiert und die erforderlichen Operationen ausgeführt wurden, wird die Kompilierungsoperation gestartet.
Kompilierungsverarbeitung
Der Kompilierungsprozess beginnt mit dem Tokenisierungsprozess. Was ist das für ein Prozess, lassen Sie uns ein wenig darüber sprechen. Bevor der Compiler den Code versteht, wird sein Inhalt in Token-Teile zerlegt. Dabei betrachtet der Compiler die Namen und Phrasen nicht, sondern trennt sie nur in ihre Token. Er kann die Bedeutung des Codes nicht verstehen, was er tut, logische Fehler im Code in diesem Stadium. Wir können uns Token als die kleinste Einheit vorstellen. Lassen Sie uns untersuchen, was die Token sind.
Schlagwörter
Schlüsselwörter sind Wörter, die durch das Design der Sprache vorgegeben sind, die von Anfang an mit einer besonderen Bedeutung geladen sind und nicht in anderer Bedeutung verwendet werden dürfen. Es gibt 32 Schlüsselwörter in C.
Bezeichner
Dies sind die ursprünglichen Namen, die den Entitäten der C-Sprache gegeben wurden. Als Beispiel können wir geben:
* Namen für Variablen
* Namen für Funktionen
* Namen für Konstanten
* Namen für die Etiketten
Operatoren
Operatoren sind Token, die einen bestimmten Prozess übernehmen. Obwohl sich die Programmierung von Programmiersprache zu Programmiersprache ändert, ist ihre Gesamtstruktur die gleiche. Wir können Dinge wie mathematische Operationen, Logikverarbeitung, durch Operatoren tun.
Konstante/Literal (Konstanten)
Ausdrücke, die direkt die numerische Größe oder Zeichenfolge im Code angeben. Es gibt 3 separate Systeme zum Schreiben numerischer Konstanten.
* Dezimal (Dezimal)
* Hexadezimal (Hexadezimal)
* Oktal (acht)
Dezimalzahlen werden so geschrieben, wie sie geschrieben sind.
Wenn Sie Hexadezimalzahlen schreiben, werden diese geschrieben, indem Sie am Anfang die Werte '0x' oder '0X' annehmen. Beim Schreiben von Oktalzahlen werden diese am Anfang mit dem Wert '0' geschrieben.
0 × 35 (10), 035 (16), 35 (8)
Die 3 oben gezeigten Werte repräsentieren unterschiedliche Zahlen.
String Literal (Zeichenkonstanten)
Fest geschrieben zwischen doppelten Anführungszeichen. Sie zeichnen sich durch ASCII-Codes aus.
Der Wert der Variablen a,b und c im obigen Code ist ein konstanter Wert. Wenn wir etwas in Form von c = a sagen würden, wäre das Innere des c-Wertes variabel und nicht fixiert.
Delimeter/Punctuators
Alle Atome, die zum Trennen von Ausdrücken verwendet werden, die von den oben genannten Gruppen ausgeschlossen sind, werden separatoren genannt. Beispielsweise sind ';' und ''' separate Atome.
Compilerregeln
In der Tokenisierungsphase (Atome) darf kein Tippfehler (Syntax) vorhanden sein. Es gibt keine Regel zwischen 2 Token, z. B. das Überspringen von Linien, das Verlassen von Leerzeichen, das Verlassen von Leerzeichen. Selbst wenn wir einen sehr legit Code schreiben, werden diese Codes in der Öffnung der Tokenisierung kombiniert. Für den Programmierer ist es wichtig, legit code für Legitability zu schreiben, auch wenn dies keine Regel ist.
Globaler NameSpace/Lokaler Namespace
Der C-Code, den wir schreiben, besteht aus 2 verschiedenen Abschnitten. Globaler Namensraum und lokaler Namensraum. Der Teil unserer Funktionen ist unser lokaler Namensraum. Der Teil, der sich außerhalb der Funktionen befindet, ist unser globaler Namensraum. Wir werden direkt auf die Funktionen dieser Bereiche zurückkommen.
Deklaration /Erklärung
Jeder Satz, den wir in der Sprache C verwenden, muss eine der beiden Strukturen im Titel enthalten. Erklärung bedeutet Benachrichtigung. Es werden keine Maßnahmen ergriffen. Es erfolgt nur eine Benachrichtigung. Es kann sowohl in der globalen Namespace-Domäne als auch in der lokalen Namespace-Domäne verwendet werden. Es bedeutet den Satz, mit dem wir eine Variable oder Funktion definieren. Wenn wir nicht deklarieren, erkennt der Compiler nicht, was diese Variable oder Funktion ist.
Aussage bedeutet Redewendung. Der Compiler weiß, dass er eine Aktion ausführen sollte, wenn er die Anweisungen sieht. Beim Schreiben einer Schleife, beim Setzen einer Entscheidungsstruktur, beim Rechnen usw. Redewendungen werden verwendet. Redewendungen können nicht in den globalen Namespace geschrieben werden. Es muss in der Funktion des lokalen Namespace geschrieben werden.
Wenn Sie den Code im oberigen Beispiel kompilieren, wird ein Fehler ausgegeben. Wir haben beide Variablen in der globalen Arena definiert, gemäß unserer Regel, die wir nur in der globalen Arena deklarieren konnten. Es gibt kein Problem beim Definieren der ersten Variablen, aber die zweite Variable enthält eine Anweisung. Das Hinzufügen einer Konstanten und einer Variablen bedeutet einen Ausdruck. Wir könnten 5 + 3 sagen, weil 2 Werte auch konstante Werte enthalten, aber wir können dies nicht verwenden.
# Richtlinie einschließen
Dieser Befehl ist der Präprozessorbefehl. Dieser Befehl gibt an, dass er an die Stelle kopiert wird, an der der Befehl während der Kompilierung platziert wurde. Löschen Sie diese Zeile und ersetzen Sie stattdessen den Inhalt der Datei mit dem Namen stdio.h. Das Wort #include bedeutet einschließen. Um die grundlegendsten Funktionen in der C-Sprache nutzen zu können, müssen wir im Gegensatz zu herkömmlichen Sprachen grundlegende Bibliotheken einbeziehen.
Grundlegende Bibliotheken, die in C Sprache vorkommen können
<stdio.h> Es ist die grundlegendste c-Bibliothek. Wir müssen auf die Standardeingabe- / Ausgabefunktionen zugreifen. Verwendet stdin-, stdout- und stderr-Dateien.
<stdlib.h> Es ist eine der grundlegenden c-Bibliotheken. Wir müssen diese Bibliotheken einschließen, um auf grundlegende Funktionen zugreifen zu können. Lassen Sie uns die Funktionen auflisten, die mit dieser Bibliothek geliefert werden.
Hallo Freunde, in diesem Artikel werde ich über die Details und Feinheiten der Programmiersprache C sprechen. Es wird ein langfristiger Artikel sein. Ich werde versuchen, so viel wie möglich einzugeben und die Zeigerlogik so einfach wie möglich zu erklären.
Warum sollten wir C lernen?
Programmiersprachen bestehen aus einem Werkzeug, das auf dem Weg zur Lösung des Problems verwendet wird. Mit jeder Programmiersprache kann das X-Problem gelöst werden. Unabhängig davon, welche Sprache zur Lösung des X-Problems geeignet ist, kann dieses Problem diskutiert werden. Bestimmte Programmiersprachen sind entstanden, um bestimmte Probleme zu lösen. Wie Sie im Artikel sehen werden, ist der Grund für die Entstehung der C-Sprache, dass UNIX entwickelt werden soll. Mit anderen Worten, wir können sagen, dass jede Sprache bestimmte Verwendungszwecke hat. Die Programmiersprache C arbeitet sehr schnell, da sie der symbolischen Maschinensprache am nächsten kommt. Es ist die schnellste Sprache auf dem Markt. Wie Sie diesem Satz entnehmen können, sollten wir diese Sprache verwenden, wenn die Geschwindigkeit kritisch ist. Eingebettete Systeme, Systemprogramme, Betriebssysteme, autonome Fahrzeuge, Smart-Home-Systeme. Wir können sagen, dass C / C ++ ein Muss in der Welt dieser Anwendungsbereiche ist.
Welchen Vorteil wird C haben?
Wenn Sie C zuerst kennen, können Sie die Programmierlogik viel besser verstehen als in anderen Sprachen. Der C-Lernende muss die Algorithmen entwickeln, für die er denkt, da es nicht viele Funktionen gibt. Kurz gesagt, das Lernen von C bietet die Möglichkeit, Algorithmen zu entwickeln. In dieser C-Sprache, die in direktem Zusammenhang mit Ram steht, können wir mit Ram die Themen wie Computerarbeitsarchitektur viel besser verstehen. Da alles in C-Sprache dem Entwickler überlassen bleibt, wurde ein Konzept namens Dynamic Memory Management erstellt. Mit diesem Konzept können wir den Heap-Stack-Bereich genauer kennenlernen. Die meisten Sprachen auf dem Markt sind von der C-Sprache inspiriert. C wird nie alt, es werden immer C / C ++ - Sprachen benötigt.
Kurz zusammengefasst;
* Die Fähigkeit Probleme zu lösen
* Computerarbeitsarchitektur
* Compiler-Arbeitslogik
* Verstehen Sie diese Sprachen leichter, wenn Sie zu anderen Sprachen wechseln
* Fähigkeit, an eingebetteten Systemen zu arbeiten
* Betriebssysteme näher kennenlernen (Arbeitslogik)
Geschichte der C-Sprache
Die Programmiersprache C wurde 1970-1971 als Nebenprodukt bei der Entwicklung des UNIX-Betriebssystems im Labor von AT & T Bell entwickelt. AT & T arbeitete dann an einem Betriebssystemprojekt namens Multics. AT & T zog sich aus diesem Projekt zurück und machte sich daran, eigene Betriebssysteme zu schreiben. Dieses Betriebssystem wurde ein Wortspiel über Multics gemacht und UNIX genannt. Zu dieser Zeit wurden Betriebssysteme in symbolischer Maschinensprache geschrieben. Ken Thompson hat die Programmiersprache B entwickelt, um die Sache zu vereinfachen. In den folgenden Jahren entwickelte Dennis Ritchie dies zu C. Das UNIX-Betriebssystem wurde 1973 mit C am Anfang neu geschrieben. Es war das erste Mal, dass ein Betriebssystem mit einer fortgeschrittenen Programmiersprache geschrieben wurde. Kurz gesagt, dieses Ereignis ist in der Geschichte der Programmierung revolutionär. In den 1980er Jahren brachte IBM seine ersten PCs auf den Markt. 1978 wurde 'The C Programming Language' von Dennis Ritchie und Brian Kernigan geschrieben. Die Programmiersprache C war die am häufigsten in PCs verwendete Sprache.
Klassifikation der Rogramm-Ingenue-Sprachen nach Stufen
Das Kriterium des Niveaus in Programmiersprachen repräsentiert die Nähe der Programmiersprache zur menschlichen Wahrnehmung. Hochsprachen sind die Sprachen, die der menschlichen Wahrnehmung am nächsten kommen, und sie sind leicht zu lernen. Niedrigsprachige Sprachen hingegen sind die am weitesten entfernten Sprachen der menschlichen Wahrnehmung und schwer zu lernen. Die Sprache der niedrigsten Ebene ist die Maschinensprache. Dieses System wird auch als Binärsystem bezeichnet. Wir sprechen von Codes mit nur 1 und 0, und Sie können mehr oder weniger erraten, wie schwierig und mühsam das Schreiben ist. Über dieser Sprache befindet sich eine Assemblersprache. Obwohl die Assemblierung einfacher ist als die Maschinensprache, ist es immer noch schwierig, eine Sprache für Personen zu erkennen und zu codieren. Darüber hinaus gibt es eine C-Sprache. Die C-Sprache ist näher an der englischen Sprache, aber mit ihren einfachen mathematischen Operationsmarkierungen und einfachen Schlüsselwörtern ist sie eine viel verständlichere Sprache (im Vergleich zur Assemblersprache).
COMPILE (Kompilieren)
Compile ist ein englisches Wort. Auf Deutsch bedeutet es kompilieren. C ist eine Sprache, die kompiliert werden muss. Das Betriebssystem kann den Code, der aus den von uns geschriebenen englischen Wörtern besteht, nicht verstehen. Es muss diesen Code kompilieren und in Codeteile konvertieren, die es verstehen wird. Wenn wir einen C-Code kompilieren, wird er zuerst mit Hilfe des Assemblers in Assembler-Code konvertiert und dann in Maschinencode konvertiert, den wir Binärcode nennen. Jetzt versteht das Betriebssystem, welchen Code wir geschrieben haben.
Der heute am häufigsten verwendete Compiler ist der Compiler namens GCC. Es besteht aus den Initialen der Wörter GNU C Compiler. Es gibt auch mehrere Compiler auf der Microsoft-Seite.
IDE-KONZEPT
Normalerweise sind Compiler Programme, die über die Befehlszeile ausgeführt werden. Der Code wird in der Editorumgebung geschrieben, dieser Code wird auf dem Terminal kompiliert. Die Wahrheit ist so. Heute ist ein Konzept namens IDE entstanden. Es besteht aus den Initialen der Wörter Integrated Development Environment. Der Grund für das Herauskommen von IDEs besteht darin, das Programm in den Editor zu schreiben und es dann auf dem Terminalbildschirm zu kompilieren. Wenn wir eine IDE auf unserem Computer installieren, wird ein Compiler damit installiert. IDE ist eigentlich kein Compiler. Es ist ein Programm, das es uns leichter macht, Code zu schreiben und zu kompilieren. Es gibt Schaltflächen wie Kompilieren und Ausführen. Wenn es sich nicht um einen Compiler handelt, können Sie sagen, was die Kompilierungsschaltfläche bewirkt. Wenn wir diese Taste drücken, wird die Kompilierung manuell am Terminal entfernt. Das Programm im Hintergrund erledigt dies für uns.
Vorprozess
Bevor unser C-Programm kompiliert wird, durchläuft es einen Prozess namens Vorbehandlung. Dieser Prozess interpretiert die Zeilen, die mit dem # (Pfund) -Zeichen oben im Programm beginnen. Nachdem diese Zeilen interpretiert und die erforderlichen Operationen ausgeführt wurden, wird die Kompilierungsoperation gestartet.
Kompilierungsverarbeitung
Der Kompilierungsprozess beginnt mit dem Tokenisierungsprozess. Was ist das für ein Prozess, lassen Sie uns ein wenig darüber sprechen. Bevor der Compiler den Code versteht, wird sein Inhalt in Token-Teile zerlegt. Dabei betrachtet der Compiler die Namen und Phrasen nicht, sondern trennt sie nur in ihre Token. Er kann die Bedeutung des Codes nicht verstehen, was er tut, logische Fehler im Code in diesem Stadium. Wir können uns Token als die kleinste Einheit vorstellen. Lassen Sie uns untersuchen, was die Token sind.
Schlagwörter
Schlüsselwörter sind Wörter, die durch das Design der Sprache vorgegeben sind, die von Anfang an mit einer besonderen Bedeutung geladen sind und nicht in anderer Bedeutung verwendet werden dürfen. Es gibt 32 Schlüsselwörter in C.
Bezeichner
Dies sind die ursprünglichen Namen, die den Entitäten der C-Sprache gegeben wurden. Als Beispiel können wir geben:
* Namen für Variablen
* Namen für Funktionen
* Namen für Konstanten
* Namen für die Etiketten
Operatoren
Operatoren sind Token, die einen bestimmten Prozess übernehmen. Obwohl sich die Programmierung von Programmiersprache zu Programmiersprache ändert, ist ihre Gesamtstruktur die gleiche. Wir können Dinge wie mathematische Operationen, Logikverarbeitung, durch Operatoren tun.
Konstante/Literal (Konstanten)
Ausdrücke, die direkt die numerische Größe oder Zeichenfolge im Code angeben. Es gibt 3 separate Systeme zum Schreiben numerischer Konstanten.
* Dezimal (Dezimal)
* Hexadezimal (Hexadezimal)
* Oktal (acht)
Dezimalzahlen werden so geschrieben, wie sie geschrieben sind.
Wenn Sie Hexadezimalzahlen schreiben, werden diese geschrieben, indem Sie am Anfang die Werte '0x' oder '0X' annehmen. Beim Schreiben von Oktalzahlen werden diese am Anfang mit dem Wert '0' geschrieben.
0 × 35 (10), 035 (16), 35 (8)
Die 3 oben gezeigten Werte repräsentieren unterschiedliche Zahlen.
String Literal (Zeichenkonstanten)
Fest geschrieben zwischen doppelten Anführungszeichen. Sie zeichnen sich durch ASCII-Codes aus.
Der Wert der Variablen a,b und c im obigen Code ist ein konstanter Wert. Wenn wir etwas in Form von c = a sagen würden, wäre das Innere des c-Wertes variabel und nicht fixiert.
Delimeter/Punctuators
Alle Atome, die zum Trennen von Ausdrücken verwendet werden, die von den oben genannten Gruppen ausgeschlossen sind, werden separatoren genannt. Beispielsweise sind ';' und ''' separate Atome.
Compilerregeln
In der Tokenisierungsphase (Atome) darf kein Tippfehler (Syntax) vorhanden sein. Es gibt keine Regel zwischen 2 Token, z. B. das Überspringen von Linien, das Verlassen von Leerzeichen, das Verlassen von Leerzeichen. Selbst wenn wir einen sehr legit Code schreiben, werden diese Codes in der Öffnung der Tokenisierung kombiniert. Für den Programmierer ist es wichtig, legit code für Legitability zu schreiben, auch wenn dies keine Regel ist.
Globaler NameSpace/Lokaler Namespace
Der C-Code, den wir schreiben, besteht aus 2 verschiedenen Abschnitten. Globaler Namensraum und lokaler Namensraum. Der Teil unserer Funktionen ist unser lokaler Namensraum. Der Teil, der sich außerhalb der Funktionen befindet, ist unser globaler Namensraum. Wir werden direkt auf die Funktionen dieser Bereiche zurückkommen.
Deklaration /Erklärung
Jeder Satz, den wir in der Sprache C verwenden, muss eine der beiden Strukturen im Titel enthalten. Erklärung bedeutet Benachrichtigung. Es werden keine Maßnahmen ergriffen. Es erfolgt nur eine Benachrichtigung. Es kann sowohl in der globalen Namespace-Domäne als auch in der lokalen Namespace-Domäne verwendet werden. Es bedeutet den Satz, mit dem wir eine Variable oder Funktion definieren. Wenn wir nicht deklarieren, erkennt der Compiler nicht, was diese Variable oder Funktion ist.
Aussage bedeutet Redewendung. Der Compiler weiß, dass er eine Aktion ausführen sollte, wenn er die Anweisungen sieht. Beim Schreiben einer Schleife, beim Setzen einer Entscheidungsstruktur, beim Rechnen usw. Redewendungen werden verwendet. Redewendungen können nicht in den globalen Namespace geschrieben werden. Es muss in der Funktion des lokalen Namespace geschrieben werden.
Wenn Sie den Code im oberigen Beispiel kompilieren, wird ein Fehler ausgegeben. Wir haben beide Variablen in der globalen Arena definiert, gemäß unserer Regel, die wir nur in der globalen Arena deklarieren konnten. Es gibt kein Problem beim Definieren der ersten Variablen, aber die zweite Variable enthält eine Anweisung. Das Hinzufügen einer Konstanten und einer Variablen bedeutet einen Ausdruck. Wir könnten 5 + 3 sagen, weil 2 Werte auch konstante Werte enthalten, aber wir können dies nicht verwenden.
# Richtlinie einschließen
Dieser Befehl ist der Präprozessorbefehl. Dieser Befehl gibt an, dass er an die Stelle kopiert wird, an der der Befehl während der Kompilierung platziert wurde. Löschen Sie diese Zeile und ersetzen Sie stattdessen den Inhalt der Datei mit dem Namen stdio.h. Das Wort #include bedeutet einschließen. Um die grundlegendsten Funktionen in der C-Sprache nutzen zu können, müssen wir im Gegensatz zu herkömmlichen Sprachen grundlegende Bibliotheken einbeziehen.
Grundlegende Bibliotheken, die in C Sprache vorkommen können
<stdio.h> Es ist die grundlegendste c-Bibliothek. Wir müssen auf die Standardeingabe- / Ausgabefunktionen zugreifen. Verwendet stdin-, stdout- und stderr-Dateien.
<stdlib.h> Es ist eine der grundlegenden c-Bibliotheken. Wir müssen diese Bibliotheken einschließen, um auf grundlegende Funktionen zugreifen zu können. Lassen Sie uns die Funktionen auflisten, die mit dieser Bibliothek geliefert werden.
Kod:
abort();
abs();
atexit();
atof();
atoi();
atol();
bsearch();
calloc();
div();
exit();
free();
getenv();
labs();
ldiv();
malloc();
mblen();
mbstowcs();
mbtowc();
qsort();
rand();
realloc();
srand();
strtod();
strtol();
strtoul();
system();
wcstombs();
wctomb();
<math.h> Wie der Name schon sagt, handelt es sich um eine Bibliothek mit Funktionen, mit denen wir mathematische Operationen ausführen können. Lassen Sie uns die Funktionen auflisten, die mit dieser Bibliothek geliefert werden.
Kod:
acts();
asin();
atan();
atan2();
ceil();
cos();
cosh();
exp();
fabs();
floor();
fmod();
frexp();
ldexp();
log();
log10();
modef();
pow();
sin();
sinh();
sqrt();
tan();
tanh();
<string.h> Dies sind Funktionen, mit denen wir bestimmte Operationen an Zeichenketten ausführen können. Diese Bibliothek enthält viele allgemeine Funktionen. Lassen Sie uns auch diese Funktionen untersuchen.
Kod:
memccpy();
memchr();
memcmp();
memcpy();
memcpy_s();
memmove();
memmove_S();
memset();
memset_s();
strcat();
strcat_s();
strchr();
strcmp();
strcoll();
strcpy();
strcpy_s();
strcspn();
strdup();
strerror();
strerror_s();
strerrorlen_s();
strlen();
strlen_s();
strncat();
strncat_s();
strncmp();
strncpy_s();
strndup();
strpbrk();
strrchr();
strspn();
strstr();
strtok();
strtok_s();
strxfrm();
# Richtlinie definieren
Definieren ist eine Präprozessorreihenfolge, die für unsere Daten verwendet wird, die wir definitiv nicht im Programm ändern wollen. Da es vom Präprozessor verarbeitet wird, wird es als Konstante / Literal und nicht als Variable im Programm ausgewertet. Im Allgemeinen erfolgt die Zuweisung von Namen zur Definition von Werten in Großbuchstaben, die nicht dem Wert und dem Namen entsprechen. Es bleibt nur ein Leerzeichen übrig.
Beispiel Verwendung;
Definieren ist eine Präprozessorreihenfolge, die für unsere Daten verwendet wird, die wir definitiv nicht im Programm ändern wollen. Da es vom Präprozessor verarbeitet wird, wird es als Konstante / Literal und nicht als Variable im Programm ausgewertet. Im Allgemeinen erfolgt die Zuweisung von Namen zur Definition von Werten in Großbuchstaben, die nicht dem Wert und dem Namen entsprechen. Es bleibt nur ein Leerzeichen übrig.
Beispiel Verwendung;
Kod:
#define A 15
#define PI 3.14
Hinweis: Bei der Definition einer Konstanten mit Define wird häufig Großschreibung verwendet. Programmierer müssen darauf achten.
Variablen in C-Sprache
Variablen sind unsere Daten, die im Arbeitsspeicher (RAM) des Computers gespeichert sind und die wir jederzeit ändern können.
Warum brauchen wir Datenspeicherung?
- Möglicherweise möchten wir an bestimmten Stellen des Programms Daten vom Benutzer empfangen, um den Programmfluss von Benutzer zu Benutzer zu ändern.
In bestimmten Fällen möchten wir möglicherweise bestimmte Transaktionen ausführen und diese Transaktionen in einem anderen Teil des Programms verwenden. Dafür benötigen wir eine temporäre Speichereinheit.
Die Daten (Variablen), die wir auf dem RAM speichern, müssen einen bestimmten Datentyp haben. Wir müssen angeben, um welchen Datentyp es sich in der Zeile handelt, in der wir die Variable definieren. Kurz gesagt, wir verwenden eine solche Verwendung, um eine Variable zu definieren.
Variablen in C-Sprache
Variablen sind unsere Daten, die im Arbeitsspeicher (RAM) des Computers gespeichert sind und die wir jederzeit ändern können.
Warum brauchen wir Datenspeicherung?
- Möglicherweise möchten wir an bestimmten Stellen des Programms Daten vom Benutzer empfangen, um den Programmfluss von Benutzer zu Benutzer zu ändern.
In bestimmten Fällen möchten wir möglicherweise bestimmte Transaktionen ausführen und diese Transaktionen in einem anderen Teil des Programms verwenden. Dafür benötigen wir eine temporäre Speichereinheit.
Die Daten (Variablen), die wir auf dem RAM speichern, müssen einen bestimmten Datentyp haben. Wir müssen angeben, um welchen Datentyp es sich in der Zeile handelt, in der wir die Variable definieren. Kurz gesagt, wir verwenden eine solche Verwendung, um eine Variable zu definieren.
Kod:
Datentyp Variablenname (Bezeichner) = Variablenwert;
Wir bestimmen den Datentyp. Wir geben der Variablen einen Namen und dieser Name sollte hervorrufen, worum es in der Variablen geht, und sich dann daran erinnern, wenn Sie einen anderen Teil des Programms aufrufen. Während wir die Variable benennen, benennen wir sie unter bestimmten Regeln. Wir werden später zu diesen Regeln kommen. Und dann verwenden wir = (Zuweisungsoperator). Verwechseln Sie es nicht mit dem Gleichheitszeichen in Mathe. Das Ziel des Vorzeichens ist es, den Wert rechts gleich der Variablen links zu nehmen. Nach dem Zuweisungsoperator geben wir Daten entsprechend dem von uns bestimmten Variablentyp an.
Was ist, wenn wir die Daten vom Benutzer erhalten möchten?
Was ist, wenn wir die Daten vom Benutzer erhalten möchten?
Kod:
int x;
scanf("%d",&x);
Wenn wir die Daten vom Benutzer erhalten möchten, reicht es aus, nur den Datentyp und den Namen anzugeben. Wir machen Platz für die Variable im Speicher. Es hat noch keinen Wert im Speicher, aber es hat eine Adresse. Ordnen Sie der Programmvariablen x kurz einen Platz zu, den ich später ausfüllen werde. Wir erhalten Daten vom Benutzer mit der scanf-Funktion, mit der wir Eingaben vom Benutzer erhalten können, und speichern diese Daten unter der Adresse x.
Regeln für Variablennamen
Regeln für Variablennamen
-Der Name, den wir den Variablen geben, kann nicht mit der Nummer beginnen. Aber die Nummer kann in oder am Ende übergeben werden.
-Der Name, den wir Variablen geben, darf keine Sonderzeichen enthalten. Wir haben eine Ausnahme für diese Regel, _ kann verwendet werden.
-Der Name, den wir Variablen geben, darf nicht länger als 32 Zeichen sein.
-Der Name, den wir den Variablen geben, kann nicht die speziellen Wörter verwenden, die das Programm verwendet. (wie int, short, for, if, **** ...)
Variablen in der Sprache -c unterscheiden zwischen Groß- und Kleinschreibung, dh Groß- und Kleinschreibung.
-Der Name, den wir Variablen geben, darf keine Sonderzeichen enthalten. Wir haben eine Ausnahme für diese Regel, _ kann verwendet werden.
-Der Name, den wir Variablen geben, darf nicht länger als 32 Zeichen sein.
-Der Name, den wir den Variablen geben, kann nicht die speziellen Wörter verwenden, die das Programm verwendet. (wie int, short, for, if, **** ...)
Variablen in der Sprache -c unterscheiden zwischen Groß- und Kleinschreibung, dh Groß- und Kleinschreibung.
Kod:
int hallo;
int hAlLo;
Die beiden oben definierten Variablen sind unabhängig voneinander. Wenn wir eine Variable mit einer Variablen definieren, die genau denselben Namen hat, wird eine Fehlermeldung angezeigt.
Grundlegende Datentypen in C-Sprache
Was ist der Datentyp? Lassen Sie mich zuerst darüber sprechen. Das Konzept, das wir Datentyp nennen, beschreibt den Typ der Variablen, die wir erstellen. Tatsächlich ist der Datentyp das Konzept, das für den Computer erstellt wurde, um zu verstehen, wie viele Bytes auf dem RAM gespeichert sind und wie diese Variable zu interpretieren ist. Jede Variable, die wir in Programmiersprachen speichern möchten, wird auf einem RAM an einer bestimmten Adresse gespeichert. Der Hauptgrund für die Aufteilung der Daten in Typen besteht darin, keinen unnötigen Speicherplatz auf dem RAM zu verschwenden. Wenn wir eine kleine Zahl verwenden, bestimmen wir den Datentyp entsprechend und verschwenden keine unnötigen Bytes. Wenn wir eine vorzeichenlose Ganzzahl verwenden, bestimmen wir sie entsprechend und verursachen keine Komplexität. Kurz gesagt, der Datentyp sagt uns, was die Daten sind. Alle Variablen im Speicher (auch wenn es sich um Zeichen handelt) konvertieren sie nach dem Kompilieren unseres Codes in Nullen und Einsen.
Char Datentyp
Der Char-Datentyp ist nur für 1 Zeichen. Es enthält ein Byte im Speicher und wird bei der Definition zwischen die Markierungen geschrieben. Da der für char im Speicher reservierte Teil ein Byte ist, können wir mit char nicht mehr als 255 Daten speichern. Wir hatten Zeichen, ich glaube, wir hören, was Sie mit diesem Datentyp sagen. Wie vergleichen wir die Zahl 255 mit dem Zeichen? Lesen wir den Satz, den ich oben geschrieben habe, noch einmal durch:
Alle Variablen im Speicher (gerade Zeichen) konvertieren sie nach dem Kompilieren unseres Codes in Nullen und Einsen.
Nehmen wir an, wir behalten den Buchstaben a in der Zeichenvariablen. Wie verwandeln wir den Buchstaben a in eine Zahl? Programmierer stellten sich diese Frage rechtzeitig und setzten einen Standard, da sie eine gemeinsame Lösung benötigten. Von der ganzen Welt akzeptierte Standards. Und sie nannten es den amerikanischen Standardcode für Informationsaustausch (ASCII).
Wie wir oben gesehen haben, gibt es für jeden Eingabewert auf der Tastatur einen numerischen Wert.
Definieren wir die Zeichenvariable und sehen ihre Entsprechung gemäß dem ASCII-Code.
Grundlegende Datentypen in C-Sprache
Was ist der Datentyp? Lassen Sie mich zuerst darüber sprechen. Das Konzept, das wir Datentyp nennen, beschreibt den Typ der Variablen, die wir erstellen. Tatsächlich ist der Datentyp das Konzept, das für den Computer erstellt wurde, um zu verstehen, wie viele Bytes auf dem RAM gespeichert sind und wie diese Variable zu interpretieren ist. Jede Variable, die wir in Programmiersprachen speichern möchten, wird auf einem RAM an einer bestimmten Adresse gespeichert. Der Hauptgrund für die Aufteilung der Daten in Typen besteht darin, keinen unnötigen Speicherplatz auf dem RAM zu verschwenden. Wenn wir eine kleine Zahl verwenden, bestimmen wir den Datentyp entsprechend und verschwenden keine unnötigen Bytes. Wenn wir eine vorzeichenlose Ganzzahl verwenden, bestimmen wir sie entsprechend und verursachen keine Komplexität. Kurz gesagt, der Datentyp sagt uns, was die Daten sind. Alle Variablen im Speicher (auch wenn es sich um Zeichen handelt) konvertieren sie nach dem Kompilieren unseres Codes in Nullen und Einsen.
Char Datentyp
Der Char-Datentyp ist nur für 1 Zeichen. Es enthält ein Byte im Speicher und wird bei der Definition zwischen die Markierungen geschrieben. Da der für char im Speicher reservierte Teil ein Byte ist, können wir mit char nicht mehr als 255 Daten speichern. Wir hatten Zeichen, ich glaube, wir hören, was Sie mit diesem Datentyp sagen. Wie vergleichen wir die Zahl 255 mit dem Zeichen? Lesen wir den Satz, den ich oben geschrieben habe, noch einmal durch:
Alle Variablen im Speicher (gerade Zeichen) konvertieren sie nach dem Kompilieren unseres Codes in Nullen und Einsen.
Nehmen wir an, wir behalten den Buchstaben a in der Zeichenvariablen. Wie verwandeln wir den Buchstaben a in eine Zahl? Programmierer stellten sich diese Frage rechtzeitig und setzten einen Standard, da sie eine gemeinsame Lösung benötigten. Von der ganzen Welt akzeptierte Standards. Und sie nannten es den amerikanischen Standardcode für Informationsaustausch (ASCII).
Wie wir oben gesehen haben, gibt es für jeden Eingabewert auf der Tastatur einen numerischen Wert.
Definieren wir die Zeichenvariable und sehen ihre Entsprechung gemäß dem ASCII-Code.
Kod:
char a = 'a';
printf ("% d", a); // using integer, der ganzzahlige Wert
printf ("% c", a); // Verwenden des Platzhalters c den Zeichenfolgenwert
Wie Sie oben sehen können, haben wir sowohl den Zeichenwert als auch den Ganzzahlwert der Variablen a gedruckt.
Integer-Datentyp
Der Datentyp Integer ist unser Datentyp, in dem Ganzzahlen gespeichert werden. Obwohl der Speicherplatz von Computer zu Computer unterschiedlich ist, beträgt er im Allgemeinen 4 Byte. Der Wert von 4 Bytes kann 32 Bit annehmen, dh maximal 2 ^ 32-1. Mit dem Operator sizeof () können Sie herausfinden, wie viel Speicher der ganzzahlige Datentyp auf Ihrem Computer benötigt.
Definieren wir Variablen mithilfe des Integer-Datentyps.
Integer-Datentyp
Der Datentyp Integer ist unser Datentyp, in dem Ganzzahlen gespeichert werden. Obwohl der Speicherplatz von Computer zu Computer unterschiedlich ist, beträgt er im Allgemeinen 4 Byte. Der Wert von 4 Bytes kann 32 Bit annehmen, dh maximal 2 ^ 32-1. Mit dem Operator sizeof () können Sie herausfinden, wie viel Speicher der ganzzahlige Datentyp auf Ihrem Computer benötigt.
Definieren wir Variablen mithilfe des Integer-Datentyps.
Kod:
int x = 5;
printf("%i",x);
printf("%d",x);
Wir können 2 verschiedene Platzhalter für ganzzahlige Variablen verwenden. % d und% i. Im Allgemeinen ist die Verwendung von% d häufiger.
Float- und Double-Datentyp
Float- und Double Floating-Dezimalzahlen werden für Komma-Zahlen verwendet, wenn wir etwas türkischer sind. In der Programmiersprache trennen wir den Dezimal- und den Ganzzahlwert jedoch durch einen Punkt und nicht durch ein Komma. Da beide Dezimalwerte darstellen. Die Antwort ist einfach, wenn wir zu der Antwort kommen, warum wir zwei verschiedene Datentypen verwenden. Der Bereich, den sie speichern. Der Float-Datentyp weist bis zu 4 Byte zu, der doppelte Datentyp reserviert bis zu 8 Byte. Es entspricht 4 Bytes 32-Bit-Speicherplatz und kann tatsächlich so viele Daten wie Ganzzahlen speichern. Double ist genau doppelt. Die Berechnung von Gleitkommazahlen auf dem Computer liefert keine eindeutigen Ergebnisse. Je höher das Byte, desto näher kommt das Ergebnis der Genauigkeit. Wir können jedoch nicht sagen, dass dies absolut korrekt ist. Daher wird Programmierern empfohlen, den doppelten Datentyp zu verwenden.
Float- und Double-Datentyp
Float- und Double Floating-Dezimalzahlen werden für Komma-Zahlen verwendet, wenn wir etwas türkischer sind. In der Programmiersprache trennen wir den Dezimal- und den Ganzzahlwert jedoch durch einen Punkt und nicht durch ein Komma. Da beide Dezimalwerte darstellen. Die Antwort ist einfach, wenn wir zu der Antwort kommen, warum wir zwei verschiedene Datentypen verwenden. Der Bereich, den sie speichern. Der Float-Datentyp weist bis zu 4 Byte zu, der doppelte Datentyp reserviert bis zu 8 Byte. Es entspricht 4 Bytes 32-Bit-Speicherplatz und kann tatsächlich so viele Daten wie Ganzzahlen speichern. Double ist genau doppelt. Die Berechnung von Gleitkommazahlen auf dem Computer liefert keine eindeutigen Ergebnisse. Je höher das Byte, desto näher kommt das Ergebnis der Genauigkeit. Wir können jedoch nicht sagen, dass dies absolut korrekt ist. Daher wird Programmierern empfohlen, den doppelten Datentyp zu verwenden.
Kod:
float x = 5.4;
float y = 5.0;
double z = 4.9;
double t = 4;
Alle oben genannten Verwendungen sind korrekt. Bei der letzten Verwendung wurde 4 direkt der Variablen t zugeordnet. Den ganzzahligen Wert speichert das Programm als Float im Speicher. Also 4.0. Wir verwenden% f Platzhalter beim Drucken für Float- und Double-Datentypen. Beim Lesen des Wertes (scanf) verwenden wir% lf für float% f double.
Eingabe- / Ausgabefunktionen in C-Sprache
Eingabe- / Ausgabefunktionen in C-Sprache
Wenn wir eine Eingabe-Ausgabe-Funktion in unserem Code verwenden oder schreiben, liest oder druckt die Funktion keine Daten direkt von unserer Tastatur. Wir sagten, dass die C-Sprache zum ersten Mal mit UNIX auftauchte. Wenn Sie zuvor UNIX-Systeme untersucht haben, müssen Sie den folgenden Satz gehört haben.
Auf UNIX-Systemen ist alles eine Datei (einschließlich Hardware).
Kurz gesagt, in C schreiben wir in die Datei und lesen sie aus der Datei. Während wir Daten vom Benutzer empfangen, lesen wir aus einer Datei namens stdin, und wenn wir etwas auf dem Bildschirm drucken möchten, schreiben wir es in die stdout-Datei. Die Fehlermeldung wird auch aus der stderr-Datei gedruckt.
Ausgabefunktionen
Ich werde über die 2 grundlegendsten Ausgabefunktionen sprechen, printf () und putchar ().
Es werden 2 Argumente in die printf-Funktion aufgenommen. Im ersten Argument schreiben wir die Daten, die wir eingeben, in zwei Anführungszeichen oder den Platzhalter, den wir verwenden möchten. Wir schreiben auch einen Ausdruck anstelle des zweiten Arguments, vorausgesetzt, wir trennen zwei Argumente durch Kommas. wie a + b, c + 3, 3 + 2 ...
Die Putchar-Funktion dient, wie der Name schon sagt, dazu, ein einzelnes Zeichen zu drucken. Wir können Variablen direkt als Argumente oder das Zeichen als einfache Anführungszeichen ('') angeben.
Eingabefunktionen
scanf, getch, getche, getchar, bekommt .....
Viele Eingabefunktionen werden verwendet. Alle diese haben geringfügige Unterschiede. Reden wir über sie.
Die Scanf-Funktion ist die Eingabefunktion, die wir am häufigsten verwenden. Es sind 2 Argumente erforderlich. Wir können unseren Platzhalter in doppelten Anführungszeichen für das Argument auf der linken Seite definieren. Wir geben dem Argument rechts die Adresse der Variablen, die wir zuweisen möchten (& Variablenname). Diese Funktion liest das Teil, bis wir den leeren Wert angeben. Den Rest nimmt es nicht (wenn es 2 Variablen liest, wird es nach dem Leerzeichen einer anderen Variablen zugewiesen).
Die Gets-Funktion wurde später aus den C-Standards entfernt, ist aber immer noch eine Funktion, die wir verwenden können. Diese Funktion liest das Teil, bis die Eingabe (' n') eingegeben wird. So können wir unseren Satz beenden, wo immer wir wollen.
Die Getchar-Funktion ist eine Funktion, die sehr sorgfältig verwendet werden sollte. Wenn wir nach dem Grund fragen, liest diese Funktion Zeichen für Zeichen und wartet, bis die Eingabetaste gedrückt wird. Wir haben den Buchstaben K gedrückt und die Eingabetaste gedrückt. Er schreibt sowohl das Zeichen k als auch ' n' in die Standarddatei. Mit anderen Worten, wenn wir unsere Variable zweimal mit Putchar lesen, unterdrückt der erste den Buchstaben K und der zweite das Zeichen ' n'. Die Lösung, die wir verwenden müssen, ist die Funktion fflush (). Es wird verwendet, um den Dateifluss zu bereinigen. Wir werden den Dateistream löschen. Was ist mit dem Dateistream?
Ist die Antwort nicht klar? stdin ist eine Datei, die das Zeichen von getchar in diese Datei schreibt. Wir müssen den Fluss dieses Ortes räumen. fflush (stdin); Wir müssen den Fluss der stdin-Datei löschen.
Die Getch-Funktion ist in der Standardbibliothek <conio.h> nicht enthalten. Diese Funktion fungiert bei der Eingabe des Zeichens, sobald wir darauf warten, dass wir die Eingabetaste drücken. Aus diesem Grund wäre es logischer, diese Funktion beim Kauf von Zeichen zu verwenden.
Schleifen und Entscheidungsstrukturen
Lassen Sie uns über die Zyklen und Entscheidungsstrukturen sprechen, die die Grundbausteine der Programmsprachen sind. Es gibt 3 verschiedene Schleifenstrukturen in der C-Sprache. Alle von ihnen können ineinander umgewandelt werden, es gibt keinen Unterschied zwischen ihnen. Lassen Sie uns über diese Zyklen sprechen;
for loop, while loop und do while loop
Für den Zyklus
Die Innenseite der for-Schleifen besteht aus 3 Teilen. Der erste Teil ist der erste Zuordnungsteil. In den alten C-Standards mussten wir den ersten Teil zur Variablenerstellung über der for-Schleife erstellen, in den neuen C-Standards wurde dies aufgehoben. Der zweite Teil ist der Bedingungsteil. Solange die Bedingung, die wir hier eingeben, wahr ist, funktioniert unser Zyklus. In der Schleife befindet sich ein 2-Punkt-Komma, und dieses 2-Punkt-Komma unterteilt die Schleife in 3 Teile. Der dritte Teil des Zyklus ist der Aktualisierungsteil. Wir müssen ein Update durchführen, um aus der Schleife herauszukommen, oder wir gehen in eine Endlosschleife.
Kurz gesagt, in C schreiben wir in die Datei und lesen sie aus der Datei. Während wir Daten vom Benutzer empfangen, lesen wir aus einer Datei namens stdin, und wenn wir etwas auf dem Bildschirm drucken möchten, schreiben wir es in die stdout-Datei. Die Fehlermeldung wird auch aus der stderr-Datei gedruckt.
Ausgabefunktionen
Ich werde über die 2 grundlegendsten Ausgabefunktionen sprechen, printf () und putchar ().
Es werden 2 Argumente in die printf-Funktion aufgenommen. Im ersten Argument schreiben wir die Daten, die wir eingeben, in zwei Anführungszeichen oder den Platzhalter, den wir verwenden möchten. Wir schreiben auch einen Ausdruck anstelle des zweiten Arguments, vorausgesetzt, wir trennen zwei Argumente durch Kommas. wie a + b, c + 3, 3 + 2 ...
Die Putchar-Funktion dient, wie der Name schon sagt, dazu, ein einzelnes Zeichen zu drucken. Wir können Variablen direkt als Argumente oder das Zeichen als einfache Anführungszeichen ('') angeben.
Eingabefunktionen
scanf, getch, getche, getchar, bekommt .....
Viele Eingabefunktionen werden verwendet. Alle diese haben geringfügige Unterschiede. Reden wir über sie.
Die Scanf-Funktion ist die Eingabefunktion, die wir am häufigsten verwenden. Es sind 2 Argumente erforderlich. Wir können unseren Platzhalter in doppelten Anführungszeichen für das Argument auf der linken Seite definieren. Wir geben dem Argument rechts die Adresse der Variablen, die wir zuweisen möchten (& Variablenname). Diese Funktion liest das Teil, bis wir den leeren Wert angeben. Den Rest nimmt es nicht (wenn es 2 Variablen liest, wird es nach dem Leerzeichen einer anderen Variablen zugewiesen).
Die Gets-Funktion wurde später aus den C-Standards entfernt, ist aber immer noch eine Funktion, die wir verwenden können. Diese Funktion liest das Teil, bis die Eingabe (' n') eingegeben wird. So können wir unseren Satz beenden, wo immer wir wollen.
Die Getchar-Funktion ist eine Funktion, die sehr sorgfältig verwendet werden sollte. Wenn wir nach dem Grund fragen, liest diese Funktion Zeichen für Zeichen und wartet, bis die Eingabetaste gedrückt wird. Wir haben den Buchstaben K gedrückt und die Eingabetaste gedrückt. Er schreibt sowohl das Zeichen k als auch ' n' in die Standarddatei. Mit anderen Worten, wenn wir unsere Variable zweimal mit Putchar lesen, unterdrückt der erste den Buchstaben K und der zweite das Zeichen ' n'. Die Lösung, die wir verwenden müssen, ist die Funktion fflush (). Es wird verwendet, um den Dateifluss zu bereinigen. Wir werden den Dateistream löschen. Was ist mit dem Dateistream?
Ist die Antwort nicht klar? stdin ist eine Datei, die das Zeichen von getchar in diese Datei schreibt. Wir müssen den Fluss dieses Ortes räumen. fflush (stdin); Wir müssen den Fluss der stdin-Datei löschen.
Die Getch-Funktion ist in der Standardbibliothek <conio.h> nicht enthalten. Diese Funktion fungiert bei der Eingabe des Zeichens, sobald wir darauf warten, dass wir die Eingabetaste drücken. Aus diesem Grund wäre es logischer, diese Funktion beim Kauf von Zeichen zu verwenden.
Schleifen und Entscheidungsstrukturen
Lassen Sie uns über die Zyklen und Entscheidungsstrukturen sprechen, die die Grundbausteine der Programmsprachen sind. Es gibt 3 verschiedene Schleifenstrukturen in der C-Sprache. Alle von ihnen können ineinander umgewandelt werden, es gibt keinen Unterschied zwischen ihnen. Lassen Sie uns über diese Zyklen sprechen;
for loop, while loop und do while loop
Für den Zyklus
Die Innenseite der for-Schleifen besteht aus 3 Teilen. Der erste Teil ist der erste Zuordnungsteil. In den alten C-Standards mussten wir den ersten Teil zur Variablenerstellung über der for-Schleife erstellen, in den neuen C-Standards wurde dies aufgehoben. Der zweite Teil ist der Bedingungsteil. Solange die Bedingung, die wir hier eingeben, wahr ist, funktioniert unser Zyklus. In der Schleife befindet sich ein 2-Punkt-Komma, und dieses 2-Punkt-Komma unterteilt die Schleife in 3 Teile. Der dritte Teil des Zyklus ist der Aktualisierungsteil. Wir müssen ein Update durchführen, um aus der Schleife herauszukommen, oder wir gehen in eine Endlosschleife.
Kod:
for (Beschreibungsteil; Steuerteil; Aktualisierungsteil);
While-Schleife
While döngüsünün içi bir kısımdan oluşur. Yapı olarak for döngüsünden farklı görünse de tamamen aynıdır. Her for döngüsü while döngüsü ile yapılabilir, her while döngüsü for döngüsü ile yapılabilir. While döngüsü tek kısımdan oluşuyor demiştik, bu kısım ise döngünün karar yapısı, true ise döngü çalışır. False ile döngü çalışmaz. C de true false olayından bahsetmiştik. 0 False değere sahiptir, onun dışındaki bütün değerler true değere sahiptir. Negatif sayılar da dahil olmak üzere.
While döngüsünün içi bir kısımdan oluşur. Yapı olarak for döngüsünden farklı görünse de tamamen aynıdır. Her for döngüsü while döngüsü ile yapılabilir, her while döngüsü for döngüsü ile yapılabilir. While döngüsü tek kısımdan oluşuyor demiştik, bu kısım ise döngünün karar yapısı, true ise döngü çalışır. False ile döngü çalışmaz. C de true false olayından bahsetmiştik. 0 False değere sahiptir, onun dışındaki bütün değerler true değere sahiptir. Negatif sayılar da dahil olmak üzere.
Kod:
int j = 0; // Definitionsteil
while (j <10) // Steuerteil
{
j ++; // Abschnitt aktualisieren
}}
Do-While-Schleife
Die Do while-Schleife ist fast dieselbe wie die while-Schleife. Der einzige Unterschied besteht darin, dass die Operationen im Bereichsbereich zuerst ausgeführt werden und dann die Steuerung übergeben wird. Selbst wenn wir While 0 schreiben, werden diese Operationen mindestens einmal ausgeführt.
Die Do while-Schleife ist fast dieselbe wie die while-Schleife. Der einzige Unterschied besteht darin, dass die Operationen im Bereichsbereich zuerst ausgeführt werden und dann die Steuerung übergeben wird. Selbst wenn wir While 0 schreiben, werden diese Operationen mindestens einmal ausgeführt.
Kod:
do{
j++;
}while(j<10);
Wenn-sonst-Entscheidungsstruktur
If-Else-Entscheidungsstrukturen sind Strukturen, mit denen wir bestimmte Operationen unter bestimmten Bedingungen ausführen können. Der allgemeine Programmablauf wird durch die if-else-Struktur bestimmt. Eine oder mehrere Bedingungen können in If gestellt werden. Was es vom Zyklus unterscheidet, ist, dass die Transaktionen einmal ausgeführt werden.
If-Else-Entscheidungsstrukturen sind Strukturen, mit denen wir bestimmte Operationen unter bestimmten Bedingungen ausführen können. Der allgemeine Programmablauf wird durch die if-else-Struktur bestimmt. Eine oder mehrere Bedingungen können in If gestellt werden. Was es vom Zyklus unterscheidet, ist, dass die Transaktionen einmal ausgeführt werden.
Kod:
int x = 5;
if (x == 5)
{
printf ("wenn Bedingung funktioniert");
}}
Nach der if-Struktur wartet der Compiler auf die else-if- und else-Struktur. Ansonsten ist er nicht interessiert. Wenn If wahr ist, wird die Genauigkeit von else-if- oder else-Strukturen nicht überprüft.
Falsche Verwendung
Falsche Verwendung
Kod:
int x = 5;
if (x <10)
{
printf ("falls gearbeitet);
}}
wenn (x> 10)
{
printf ("Sekunde wenn gearbeitet");
}}
Ich habe oben einen Missbrauch gezeigt, warum Sie falsch sagen werden. Es ist nicht möglich, dass x gleichzeitig kleiner als 10 und x größer als 10 ist. Es ist entweder klein oder groß. Das Programm wird durch zweimaliges Aufrufen der if-Struktur verlangsamt. Die korrekte Verwendung sollte if-else oder if-else if sein. Denn wenn diese Strukturen wahr sind, werden andere abhängige Blöcke übersprungen.
Korrekte Nutzung
Korrekte Nutzung
Kod:
int x = 5;
if (x <10)
{
printf ("falls gearbeitet);
}}
sonst wenn (x> 10)
{
printf ("sonst wenn gearbeitet");
}}
Switch-Case-Entscheidungsstruktur
Diese Entscheidungsstruktur ist eine Struktur, die verwendet werden sollte, wenn es viele Möglichkeiten gibt. Jede Switch-Case-Struktur kann mit if else if-Struktur geschrieben werden, jede if else if-Struktur kann mit switch case geschrieben werden. Aber in Fällen, in denen es viele Möglichkeiten gibt, ist die Verwendung von if else if sehr problematisch.
Diese Entscheidungsstruktur ist eine Struktur, die verwendet werden sollte, wenn es viele Möglichkeiten gibt. Jede Switch-Case-Struktur kann mit if else if-Struktur geschrieben werden, jede if else if-Struktur kann mit switch case geschrieben werden. Aber in Fällen, in denen es viele Möglichkeiten gibt, ist die Verwendung von if else if sehr problematisch.
Kod:
Schalter (variabel)
{
Fall 1:
xxxxx;
brechen;
Fall 2:
JJJJJ;
brechen;
Fall 3:
zzzzzz;
brechen;
Standard:
Wert nicht gefunden;
}}
Es nimmt eine Variable in den Schalter auf, nehmen wir an, wir geben die Variable x. Wir betrachten den Wert in der Variablen X, lassen Sie diesen Wert 5 sein. schaut auf Fall 1 schaut auf 2, zuletzt schaut auf 3. Wenn keine gefunden wurde, wird standardmäßig die Standardeinstellung verwendet.
Was ist ein Zeiger?
Pointer ist ein englisches Wort. Deutsche Bedeutung Zeiger ist bezeichnend. Wie wir aus der Bedeutung des Wortes verstehen können, speichert das Konzept, das wir Zeiger nennen, die Adressinformationen einer Variablen. Es zeigt diese Variable. Kurz gesagt, der Zeiger ist die Adressinformation, in der eine Variable auf dem RAM gespeichert ist.
Wenn wir eine Variable in einer beliebigen Programmiersprache erstellen, wird die von uns erstellte Variable in einer zufälligen Speichereinheit auf dem RAM abgelegt. Die Adressierung auf dem RAM erfolgt gemäß der Hexadezimalzahl 16.
Was ist ein Zeiger?
Pointer ist ein englisches Wort. Deutsche Bedeutung Zeiger ist bezeichnend. Wie wir aus der Bedeutung des Wortes verstehen können, speichert das Konzept, das wir Zeiger nennen, die Adressinformationen einer Variablen. Es zeigt diese Variable. Kurz gesagt, der Zeiger ist die Adressinformation, in der eine Variable auf dem RAM gespeichert ist.
Wenn wir eine Variable in einer beliebigen Programmiersprache erstellen, wird die von uns erstellte Variable in einer zufälligen Speichereinheit auf dem RAM abgelegt. Die Adressierung auf dem RAM erfolgt gemäß der Hexadezimalzahl 16.
Kod:
int x = 5; // Wir erstellen eine Variable namens x und setzen 5 ein
Wir wissen, dass diese Variable x an einer zufälligen Stelle im Speicher gespeichert ist. Wir haben gesagt, dass diese Adresse auch im Hexadezimalformat angezeigt wird. Um diese Adresse zu lernen, müssen wir einen Zeiger definieren. Wir verwenden die * -Anweisung, um einen Zeiger zu definieren.
Kod:
int * p = & x; // Zeigervariable, die die Adresse der Variablen x enthält
Wir haben das & -Zeichen in dem Code verwendet, den wir oben gesehen haben. Der Name dieses Zeichens ist das kaufmännische Und-Zeichen. Es bedeutet, dieses Zeichen zweimal nebeneinander zu verwenden. Wenn wir es alleine verwenden, können wir es kurz als Ort von
zusammenfassen. Das kaufmännische Und-Zeichen gibt den Speicherort der Variablen an, dh die Adresse der Variablen.
Wenn wir eine Zeigertypvariable auf dem Bildschirm drucken möchten, müssen wir einen Platzhalter verwenden. Der Platzhalter, den wir für Zeiger verwenden, ist das% p-Zeichen.
Wenn wir eine Zeigertypvariable auf dem Bildschirm drucken möchten, müssen wir einen Platzhalter verwenden. Der Platzhalter, den wir für Zeiger verwenden, ist das% p-Zeichen.
Kod:
int x = 5;
int *p = &x;
printf("%p",p);
Dieser Code gibt uns die Adresse der Variablen x aus. Wenn wir den Code immer wieder ausführen, werden wir unterschiedliche Ergebnisse sehen. Wie im Einführungsteil des Artikels erwähnt, werden die Variablen zufällig auf dem RAM platziert.
Ist es möglich, den Wert in der Adressvariablen zu sehen, den der Zeiger weiterhin verwendet? Unsere Antwort lautet ja. Der von uns verwendete p-Zeiger zeigt die Position der x-Variablen. Die von uns verwendete x-Variable ist eine Ganzzahl. Welches Ergebnis erhalte ich, wenn ich den% d-Wert schreibe, bei dem es sich um den Platzierer von Ganzzahlwerten im Befehl printf handelt? Wir erwarten, dass es den Wert 5 druckt, oder?
Ist es möglich, den Wert in der Adressvariablen zu sehen, den der Zeiger weiterhin verwendet? Unsere Antwort lautet ja. Der von uns verwendete p-Zeiger zeigt die Position der x-Variablen. Die von uns verwendete x-Variable ist eine Ganzzahl. Welches Ergebnis erhalte ich, wenn ich den% d-Wert schreibe, bei dem es sich um den Platzierer von Ganzzahlwerten im Befehl printf handelt? Wir erwarten, dass es den Wert 5 druckt, oder?
Kod:
int *p = &x;
printf("%d",p);
Dieser Code gibt einen Fehler an uns zurück. Wenn wir zur Fehlerursache kommen, möchten wir den ganzzahligen Wert mit der Funktion printf unterdrücken. Deshalb haben wir den Ausdruck% d verwendet. Der Teil nach dem Komma muss ebenfalls ein ganzzahliger Wert sein. Aber wir schreiben p nach dem Komma. p Ganzzahl ist kein Wert. p ist eigentlich ein neuer Variablentyp. Denken Sie wie Integer, Float, Double, Char, Long, Pointer. Ganzzahl hat keinen Wert, sie hat einen Adresswert. Hier steht unsere Aussage * für unsere Hilfe. Dieser Ausdruck bedeutet den Wert innerhalb der Adresse, auf die der Zeiger zeigt. Was wir die Adresse nennen, auf die der Zeiger zeigt, ist tatsächlich die Adresse der Variablen x. Wir meinen also innerhalb der Adresse der Variablen x. Also der x-Wert, 5
.
Der richtige Code lautet:
Der richtige Code lautet:
Kod:
int x = 5;
int *p = &x;
printf("%d", *p);
Nehmen wir einige Beispiele, um die Logik besser zu verstehen.
Kod:
int a = 10;
int *ptr = &a;
*ptr = 15;
Kod:
int b = 20;
int c = 30;
int *ptr2 = &b;
ptr2 = &c;
Können Sie den Unterschied zwischen den beiden Codes verstehen, die ich oben geschrieben habe?
Im ersten Code haben wir eine Variable mit dem Namen ptr-Zeiger erstellt, wobei die Adresse der Variablen a beibehalten und die Adresse des ptr-Zeigers mit dem Wert (*) 15 geändert wurde. Dieses Konzept befindet sich in der Adresse, die der Cursor hält (dh die Variable a ändert sich direkt).
Wenn wir zum zweiten Code kommen, erstellen wir zwei verschiedene Variablen mit den Namen b und c. Unser Zeiger mit dem Namen ptr2 enthält die Adresse der Variablen b. Später ändern wir den ptr2-Zeiger (wir haben keinen Zeiger verwendet, nicht das Innere), dh die Zeigervariable. Unser ptr2-Zeiger enthält nun die Adresse der Variablen c und nicht die Adresse der Variablen b.
Im ersten Code haben wir eine Variable mit dem Namen ptr-Zeiger erstellt, wobei die Adresse der Variablen a beibehalten und die Adresse des ptr-Zeigers mit dem Wert (*) 15 geändert wurde. Dieses Konzept befindet sich in der Adresse, die der Cursor hält (dh die Variable a ändert sich direkt).
Wenn wir zum zweiten Code kommen, erstellen wir zwei verschiedene Variablen mit den Namen b und c. Unser Zeiger mit dem Namen ptr2 enthält die Adresse der Variablen b. Später ändern wir den ptr2-Zeiger (wir haben keinen Zeiger verwendet, nicht das Innere), dh die Zeigervariable. Unser ptr2-Zeiger enthält nun die Adresse der Variablen c und nicht die Adresse der Variablen b.
Son düzenleme: