C dient als Fundament für C++. Während C++ häufig in Desktop-Anwendungen und Spielen zum Einsatz kommt, stellt C eine hervorragende Option für Programmieranfänger dar. Im Folgenden erläutern wir die Gründe dafür.
Was genau ist C?
C ist eine strukturierte Programmiersprache der höheren Ebene. In C verfasste Programme zeichnen sich durch ihre Portabilität aus. Dank ihrer Robustheit zählt C bis heute zu den führenden Programmiersprachen. Sie findet Anwendung in komplexen Systemen wie eingebetteten Systemen, Treibern, Kerneln, Systemanwendungen, Betriebssystemen (z.B. Microsoft Windows, Apple OS X), Datenbanken (wie MySQL) und einigen IoT-Anwendungen.
C ist eine kompilierte Sprache und bildet somit eine Abstraktionsebene zwischen dem Maschinencode und dem geschriebenen Programm.
Ein einfaches C-Programm zur Addition zweier Zahlen sieht wie folgt aus:
#include<stdio.h> int main() { int a, b, sum; printf("Geben Sie zwei Zahlen zum Addieren ein: "); scanf("%d%d", &a, &b); sum = a + b; printf("Summe von %d und %d ist %d", a, b, sum); return 0; }
Die Ausgabe des Programms sieht dann so aus:
Ausgabe des Beispiel-C-Programms
C-Programme verwenden stdio.h, die Standard-Eingabeausgabe-Bibliothek.
STDIO beinhaltet grundlegende Eingabe-Ausgabe-Funktionen wie printf und scanf. printf dient zur Ausgabe von Nachrichten oder Werten auf der Konsole, während scanf Eingaben von der Konsole entgegennimmt. Wir verwenden %d, um anzugeben, dass es sich um ganze Zahlen handelt.
Bei der Eingabe von Dezimalzahlen können unerwartete Ergebnisse auftreten. Um dies zu vermeiden, kann %f verwendet werden. Die Funktion main() ist die erste, die bei Ausführung des Programms aufgerufen wird. Die Syntax ist sehr einfach: Variablentypen deklarieren und dann verwenden.
Was ist C++?
C++ basiert auf objektorientierten Programmierprinzipien wie Abstraktion, Polymorphie, Vererbung und Kapselung. Man kann C++ als Erweiterung von C mit dem Konzept von Klassen und Objekten betrachten.
Die Verwendung von Objekten zur Datenspeicherung verleiht Programmen eine übersichtliche Struktur. Möchte man beispielsweise Daten eines Schülers speichern, kann man eine Schülerklasse mit Attributen wie Name, Alter, Hobbys, Noten usw. erstellen. Anschließend kann man ein tatsächliches Schülerobjekt anlegen!
class Student { public: char name[20]; int age; float marks; }; //Erzeugt ein neues Objekt Student student1 = new Student();
In der Praxis wird das Objekt erst zur Laufzeit erzeugt und der Speicher zugewiesen.
C++ bietet eine hohe Leistung, was es zur bevorzugten Wahl für die Entwicklung von leistungsstarken Spiele-Engines, eingebetteten Systemen, Browsern, Compilern und grafikbasierten Anwendungen wie der Bildverarbeitung macht.
Einige Datenbanken wie MongoDB sind in C++ geschrieben. Wie C ist auch C++ portabel.
Betrachten wir unser vorheriges Additionsbeispiel in C++, und beachten wir die Unterschiede in der Syntax:
#include <iostream> using namespace std; int main() { int a, b; cout << "Geben Sie die Zahlen ein: "; cin >> a >> b; int sum = a + b; cout << a << " + " << b << " = " << sum; return 0; }
Hier nutzen wir cout und cin anstelle von printf und scanf. Zudem können Variablendeklarationen an beliebiger Stelle vor ihrer Verwendung erfolgen (wie bei der Variable sum). Die Ausgabefunktion ist einfach, da sie direkt die Variablennamen verwendet. Beachten Sie, dass wir den Namespace std aus der iostream-Bibliothek nutzen. std beinhaltet Funktionen wie cout, cin und mehr.
Gemeinsamkeiten zwischen C und C++
C kann als Teilmenge von C++ gesehen werden. Es gibt viele Ähnlichkeiten zwischen C und C++, sowohl in der Art der Programmierung als auch in den Anwendungsbereichen. Beide sind robust, portabel und leistungsstark. Einige Gemeinsamkeiten sind:
Nr. | Merkmal | Erläuterung |
1 | Syntax | Beide nutzen die gleiche Syntax, z.B. bei Variablendeklarationen, Semikolons am Zeilenende, Namenskonventionen usw. |
2 | Strukturell und prozedural | Jede Codezeile wird sequentiell ausgeführt. Die Programmstruktur ist ähnlich: Importe, Variablendeklarationen, Hauptcode. |
3 | Main()-Funktion | Der gesamte auszuführende Code muss innerhalb der main()-Funktion liegen. main() wird als erstes aufgerufen. |
4 | Zeiger | Sowohl C als auch C++ verwenden Zeiger auf gleiche Weise. Ein Zeiger speichert die Speicheradresse einer anderen Variable. Beispiel: int a = 1; Nach der Ausführung wird a eine Speicheradresse (z.B. XX0011) zugewiesen. Der Speicherort von ‘a’ kann über den &-Operator zugewiesen werden, also: int ptr_a = &a |
5 | Schlüsselwörter und Operatoren | Alle in C vorhandenen Schlüsselwörter und Operatoren gelten auch in C++. Dazu gehören Scope, Static, Public, Int usw. C++ enthält zusätzliche Operatoren und Schlüsselwörter. |
Unterschiede zwischen C und C++
C++ wurde als Erweiterung von C entwickelt, um einige Einschränkungen von C zu überwinden. Jedes in C geschriebene Programm funktioniert auch in C++, aber nicht umgekehrt! Der Hauptunterschied liegt darin, dass C++ objektorientierte Programmierung (OOP) unterstützt. Zudem wird in C++ stärker auf die Typüberprüfung geachtet. Weitere Unterschiede sind:
C | C++ |
Entwickelt von Dennis Ritchie zwischen 1969-1973 in den AT&T Bell Labs. | Entwickelt von Bjarne Stroustrup im Jahr 1979. |
Schlüsselwörter wie switch, int, static, union und andere. | Alle C-Schlüsselwörter sind in C++ gültig; zusätzlich sind 31 weitere Schlüsselwörter verfügbar. |
Unterstützt nur prozedurale Programmierung. | C++ unterstützt mehrere Programmierparadigmen wie OOP, generische und funktionale Programmierung. |
OOP-Funktionen sind in C nicht implementierbar. | Merkmale wie Freunde, virtuelle Funktionen in C++ verbessern die OOP-Funktionalität. |
C unterstützt eingebaute Datentypen. | C++ unterstützt sowohl eingebaute als auch benutzerdefinierte Datentypen durch Klassen. |
Es gibt keine Möglichkeit der Überladung von Operatoren oder Funktionen. | C++ unterstützt sowohl die Überladung von Operatoren als auch von Funktionen (Polymorphismus). |
Speicherzuweisung über malloc() und calloc(), Freigabe mit free(). | Speicherzuweisung mit new und Freigabe mit delete. |
C unterstützt keine Ausnahmebehandlung. | Unterstützt Ausnahmebehandlung. |
Fokus auf die Prozedur oder Methode, weniger auf Daten. | Fokus liegt stärker auf Daten. |
Weitere wichtige Funktionen, die es nur in C++ gibt, sind:
- Mit dem Schlüsselwort Namespace können Variablen gleichen Namens in unterschiedlichen Namespaces definiert werden.
- Funktionen können innerhalb von Strukturen verwendet werden, die auch Zugriffsmodifikatoren haben können.
- Unterstützung für Referenzvariablen.
Wann C oder C++ verwenden?
Es ist eine häufige Frage unter Programmierern, warum man C lernen sollte, wenn man alles mit C++ erledigen kann.
Das Erlernen von C vermittelt ein solides Fundament für Datenstrukturen, Zeiger, Schlüsselwörter, Konzepte von Stack, Heap und Speicherzuweisung.
Zudem wird C oft für leistungsstarke Anwendungen genutzt, da der C-Compiler schneller ist als der C++-Compiler. Wenn man also Code ohne Objekte, Klassen, virtuelle Funktionen oder Templates schreiben muss, ist C die bessere Wahl, da C++ mit seinen umfangreichen Bibliotheken überdimensioniert wirken kann.
Die meisten Low-Level-Codes wie Kernel, Betriebssysteme und Datenbanken werden immer noch in C geschrieben, weshalb C-Kenntnisse das Erlernen von C++ erleichtern.
C++ gilt als eine der schnellsten und effizientesten Sprachen – daher ist sie eine der Top-Programmiersprachen, besonders bei anspruchsvollen Anwendungen wie Spiele-Engines, IoT-Geräten und Desktop-Apps. Oft wird eine Kombination aus C- und C++-Code eingesetzt, um optimale Leistung und die Vorteile objektorientierter Programmierung zu nutzen.
Zusammenfassung
In diesem Artikel haben wir die Grundlagen von C und C++ anhand eines einfachen Beispiels kennengelernt. Wir haben die Hauptunterschiede und Ähnlichkeiten sowie Anwendungsbereiche der beiden Sprachen besprochen.
Gerade am Anfang der Softwareentwicklungs-Reise gibt der Einstieg mit C Vertrauen, da es einfacher ist und wichtige Programmierkonzepte wie Datenstrukturen, Zeiger und Speicher behandelt.
Sie könnten auch Interesse an dem Online-C-Compiler und dem C++-Compiler von wdzwdz haben.