Kurzeinführung in C/C++

Werbung
Kurzeinführung in C/C++
Kurzeinführung in C/C++
Informationsquellen:
- Webseite zur Vorlesung, Abschnitt
“Informationen zu C und C++”
Datenstrukturen und Algorithmen WS2005/06
1
Universität Konstanz
Kurzeinführung in C/C++
Einleitung
• Vorteile von Java:
– gut strukturiert mit hohem Funktionsumfang
(mächtige Standardbibliothek)
– weitestgehend Plattformunabhängig
• Probleme:
– relativ langsam
– automatische Speicherverwaltung manchmal
ungünstig
Datenstrukturen und Algorithmen WS2005/06
Universität Konstanz
2
Kurzeinführung in C/C++
Einleitung
• Vorteile von C++
– ermöglicht schnelle und maschinennahe
Implementierungen
– gut geeignet für Simulationen, Suchverfahren,
Kompressionsverfahren, zeitkritische Anwendungen
• Probleme:
– Standardbibliothek weniger mächtig als bei Java
• dennoch: weit verbreitet, besonders bei
wissenschaftlichen Anwendungen
Datenstrukturen und Algorithmen WS2005/06
Universität Konstanz
3
Kurzeinführung in C/C++
C++ Entwicklungsumgebungen
Entwicklungsumgebungen:
– Windows:
• Microsoft Visual C++
• Borland C++
• CYGwin (Linux-artige Umgebung für Windows)
– Linux/Unix:
• GCC (GNU C Compiler)
• G++ (GNU C++ Compiler)
Datenstrukturen und Algorithmen WS2005/06
Universität Konstanz
4
Kurzeinführung in C/C++
Hello World
Datenstrukturen und Algorithmen WS2005/06
5
Universität Konstanz
Kurzeinführung in C/C++
Hello World in Java
Kommandozeilenparapublic class Hello
meter als String-Array
{
public static void main(String args[])
{
System.out.println("Hello World!");
}
}
Datenstrukturen und Algorithmen WS2005/06
Universität Konstanz
6
Kurzeinführung in C/C++
Hello World in C++
#include <iostream> // Für cout
using namespace std;
Anzahl der Kommandozeilenparameter
Kommandozeilenpara-
int main(int argc, char *args[])
meter als String-Array
{
cout << “Hello World!” << endl;
return 0;
}
Datenstrukturen und Algorithmen WS2005/06
Universität Konstanz
7
Kurzeinführung in C/C++
Compilierungsmodell in C++
Datenstrukturen und Algorithmen WS2005/06
Universität Konstanz
8
Kurzeinführung in C/C++
Compilierungsmodell
• Präprozessor
– Auflösung von Direktiven
– #include, #define, #ifdef, etc.
• Compiler
– Konvertierung von Quellcode-Dateien in
Objekt-Dateien
• Linker
– Erzeugung einer ausführbaren Datei
Datenstrukturen und Algorithmen WS2005/06
9
Universität Konstanz
Kurzeinführung in C/C++
Compilieren und Linken
• Wie in Java können mehrere Quellcode-Dateien
verwendet werden
• Jede Quellcode-Datei ".C" muss einzeln
compiliert werden, jedesmal wird eine ObjektDatei ".o" erzeugt.
• Dabei können Beziehungen zwischen
verschiedenen Quellcode-Dateien offen bleiben
(z.B. externe Variablen).
• Beim anschließenden Linken werden die ObjektDateien zu einem Binary zusammengefügt.
Datenstrukturen und Algorithmen WS2005/06
Universität Konstanz
10
Kurzeinführung in C/C++
Compilierung Beispiel
> ls
HelloWorld.cc
> g++ -c HelloWorld.cc
> ls
HelloWorld.cc
HelloWorld.o
> g++ -o HelloWorld HelloWorld.o
> ls
HelloWorld
HelloWorld.cc
HelloWorld.o
> ./HelloWorld
Hello World!
Datenstrukturen und Algorithmen WS2005/06
Universität Konstanz
11
Kurzeinführung in C/C++
Elementare Datentypen
Datenstrukturen und Algorithmen WS2005/06
Universität Konstanz
12
Kurzeinführung in C/C++
Elementare Datentypen in Java
• Zahlenbereiche der Ganzzahltypen
Typ
Bits
8
byte
short 16
32
int
64
long
16
char
Minimalwert
-128
-32.768
-2147483648
-9.223•1018
0 ('\u0000')
Maximalwert
127
32767
2147483647
9.223•1018
65.535 ('\uffff')
• Typen byte, short, int und long sind
Vorzeichenbehaftet (signed) und meistens in
Zweierkomplementdarstellung codiert
Datenstrukturen und Algorithmen WS2005/06
Universität Konstanz
13
Kurzeinführung in C/C++
Elementare Datentypen in C++
Typ
int
Bits
32
unsigned int
signed char
unsigned char
short
unsigned short
long long
32
8
8
16
16
64
unsigned long
long
64
Datenstrukturen und Algorithmen WS2005/06
Zahlenbereich
-2.147.483.648 bis
2.147.483.647
0 bis 4.294.967.295
-128 bis 127
0 bis 255
-32.768 bis 32.767
0 bis 65.635
9.223•1018
0 bis 9.223•1018
0 bis 1.845•1019
Universität Konstanz
14
Kurzeinführung in C/C++
Elementare Datentypen in C++
• Anders als in Java sind in C++ die Größen der
Elementaren Datentypen maschinenabhängig
• Die Größe der Datentypen lässt sich mit sizeof
ermitteln: int n=sizeof(int)
• In C++ gilt immer die Ungleichung
sizeof(char) ≤ sizeof(short) ≤
sizeof(int) ≤ sizeof(long)
Datenstrukturen und Algorithmen WS2005/06
Universität Konstanz
15
Kurzeinführung in C/C++
Klassen
Datenstrukturen und Algorithmen WS2005/06
Universität Konstanz
16
Herunterladen