Algorithmen und Datenstrukturen Zeiger und Strukturen. M. Herpers, Y. Jung, P. Klingebiel

Größe: px
Ab Seite anzeigen:

Download "Algorithmen und Datenstrukturen Zeiger und Strukturen. M. Herpers, Y. Jung, P. Klingebiel"

Transkript

1 Algorithmen und Datenstrukturen Zeiger und Strukturen M. Herpers, Y. Jung, P. Klingebiel 1

2 Lernziele Zeiger in C kennen und anwenden können Wissen, wie der Speicherplatz in C verwaltet wird Den Zusammenhang zwischen Arrays und Zeigern kennen und anwenden können Bitmanipulationen und ihre Anwendung kennen C-Strukturen (Records) kennen und anwenden können 2

3 ZEIGER (POINTER) 3

4 Wo steht was im Speicher? #include <stdio.h> int main(int argc, char *argv[]) { int a = 10; int b = 20; return 0; } 4

5 Wo steht was im Speicher? Ein ganz einfaches Programm! Wie sieht es im Speicher aus? 0022EE00 10 a 0022FFAB 20 b Speicheradressen Variablennamen Speicherinhalte 5

6 Wo steht was im Speicher? #include <stdio.h> int main(int argc, char *argv[]) { int a = 10; int b = 20; int *azeiger = &a; /* Pointer azeiger */ int *bzeiger = &b; /* Pointer bzeiger */ return 0; } 6

7 Wo steht was im Speicher? Wie sieht es im Speicher aus? bzeiger 0022FFAB &a 0022EE00 10 a azeiger 0022EE00 &b 0022FFAB 20 b Adressen 7

8 Zeiger bzw. Pointer Pointer ist Variable, die Speicheradresse hält Zugreifen auf Daten an dieser Speicheradresse heißt Dereferenzieren eines Pointers In Funktionen sind Variablen aus aufrufender Funktion über Pointer veränderbar: Call-by-Reference 8

9 Pointer Pointer hält Adresse einer Speicherzelle Speicheradresse ptr 0x7b03a928 j int main() { int j = 12; } int *ptr = &j; printf("%d\n", *ptr); j = 24; printf("%d\n", *ptr); printf("%p\n", ptr); Was wird ausgegeben? 9

10 Pointer Null-Pointer kann nicht dereferenziert werden #include <stdio.h> ptr j 12 int main() { int j = 12; int *ptr = NULL; } printf("%d\n", *ptr); return 0; // crash! Segmentation violation (core dumped) 10

11 Zeiger-Beispiel: Einzelschrittansicht Zugriff auf Variable mit Pointer 11

12 Ausgabe Werte und Adressen int main(int argc, char *argv[]) { int a = 10; int *azeiger = &a; int b = 20; int *bzeiger = &b; printf("%d \t %d\n", *azeiger, *bzeiger); // Werte // Speicheradressen, wo die Werte stehen printf("%p \t %p\n", azeiger, bzeiger); // Adresse der Adressen (d.h. der Pointer) printf("%p \t %p\n", &azeiger, &bzeiger); } 12

13 Adressen Werte und Pointer Konkret: Wie sieht es im Speicher aus? Beispielausgabe: 0022FF FF6C bzeiger 0022FF6C 20 b 0022FF FF74 azeiger 0022FF74 10 a 13

14 Zeiger auf void void* Bezeichnet Zeiger, der jeden anderen Zeiger ersetzen kann, ohne dass Information verloren geht Jeder Zeiger kann in void* verwandelt werden Platzhalter für Zeiger Bsp. (Type Cast): int a = 11; char *ca = NULL; void *ptr; ptr = (void*)&a; ptr = (void*)ca; 14

15 Speicherverwaltung in C Geschieht mit Hilfe von Bibliotheksfunktionen #include <stdlib.h> Speicherblock anfordern mit Funktion malloc() void* malloc (size_t size); Ziemlich low-level, benötigt nur gewünschte Größe des (zusammenhängenden) Speicherbereichs in Byte Bsp. dynamisch Platz für 10 Short-Werte allozieren: unsigned short *ptr = (unsigned short*)malloc(10 * sizeof(unsigned short)); Kein Unterschied zwischen Einzelwerten und Arrays! Speicherblock freigeben mit Funktion free() void free(void *ptr) 15

16 Speicherverwaltung in C Speicher anfordern (hier für einen Integer) int *ptr = (int*)malloc(sizeof(int)); if (ptr!= NULL) { *ptr = 1024; } else { printf("kein Speicher verfuegbar!\n"); } Speicher freigeben if (ptr!= NULL) { free(ptr); ptr = NULL; } ptr

17 Speicherverwaltung in C int *intptr; intptr = (int*)malloc(sizeof(int)); *intptr = 4711; Zeiger deklarieren Speicher anfordern Wert setzen *intptr intptr x0050 free(intptr); int otherval = 5; intptr = &otherval; Speicher freigeben intptr umsetzen auf andere Speicheradresse *intptr intptr 5 0x0054 otherval &otherval 17

18 Malloc und free malloc und free werden benutzt, um Speicherplatz dynamisch zu allokieren/ deallokieren Dynamischer Speicherplatz (heap) ist ein freier Speicherplatzereich, in dem die Lebenszeit von Objekten vom Programm bestimmt wird. malloc allokiert so viel Speicher, wie angefragt, und gibt die Adresse zu dem bereich zurück Die Allokation mit malloc kann misslingen. Dann wird ein NULL-Pointer zurückgegeben Nach einer Speicherplatz-Allokation, sollte immer geprüft werden, ob diese gelungen ist. Dereferenzierung von Pointern vor malloc oder nach free führt zum Programmcrash. Speicherplatz ist nicht unbegrenzt! Alle Objekte, die mit malloc allokiert wurden, müssen mit free wieder frei gegeben warden, wenn sie nicht mehr gebraucht werden, andernfalls kann der Speicherplatz nicht wieder verwendet werden (memory leak) An free wird der Pointer, der malloc initialitisiert wurde, als Parameter übergeben 18

19 Stack vs. Heap Heap-Allokation int *intarray = (int*)malloc(3 * sizeof(int)); intarray[0] = 6837;... free(intarray); Stack-Allokation int intarray[3]; intarray[0] = 6837; 19

20 Pointer und Arrays Referenz auf mehrere zusammenhängende Speicherzellen (dynamisch allozierte Felder) #include <stdlib.h> int main() { int *ptr = (int*)malloc(3 * sizeof(int)); ptr[0] = 10; ptr[1] = 11; ptr[2] = 12 free(ptr); ptr return 0; }

21 Pointer und Arrays Felder sind in C intern implementiert als konstante Zeiger auf zusammenhängende Speicherblöcke X[0] 1 X[1] X[2] X[3] X[4] int main() { int j, x[5]; for (j = 0; j < 5; j++) x[j] = 0; x x+1 x+3 } int *ptr = x; * ptr = 1; // x[0] = 1 *(ptr+1) = 2; // x[1] = 2 *(ptr+3) = 5; // x[3] = 5 21

22 Pointer und Arrays Pointervariablen enthalten bzw. zeigen auf Adressen Ein Feldname repräsentiert Anfangsadresse des Feldes, ist somit ein unveränderlicher Pointer Wert einer Array-Variablen ist immer Adresse des ersten Array-Elements, also eine Adresskonstante Bei Feldern damit immer nur Call-by-Reference Übergabe Bsp.: int myarrayfunc(int arr[], int num) { } Pointerarithmetik Nur Addition bzw. Subtraktion mit Integer (z.b. p++) Ergebnis typabhängig: Größe eines Speicherobjekts des geg. Datentyps wird auf Adresse addiert n Elemente entsprechen n * sizeof(<datentyp>) Byte 22

23 Zeiger auf Zeiger void** Platzhalter für beliebigen Zeiger auf beliebigen Zeiger (beliebig wegen void) **ptr hingegen: Dereferenziert Zeiger, der auf einen Zeiger zeigt Und dereferenziert auch diesen zweiten Zeiger Findet also zur eigentlichen Information Link zu Pointer-Tutorial: Pointer notwendig für Eingaben: scanf("%d", &i); Pointer notwendig als Funktionsparameter (Call-by-Ref.) 23

24 ZEICHENKETTEN IN C 24

25 Zeichenketten Zeichenketten (bzw. Strings) sind in C char-arrays (sog. C-Strings ) C kennt keine speziellen Operationen auf Zeichenketten Es gibt nur Operationen auf einzelnen Zeichen (bzw. Arrays von Zeichen) Zeichenketten werden in der Regel mit Bibliotheksfunktionen bearbeitet: #include <string.h> 25

26 Strings Ein String in C ist ein Array von Characters char mystring[20]; Strings werden terminiert mit Character '\0' mystring[0] = 'H'; mystring[1] = 'i'; mystring[2] = '\0'; printf("%s", mystring); Was wird hier ausgegeben? 26

27 Zeichenketten Unterschied Pointer Array String: Pointer belegt nur eine einzige Speicheradresse Array oder String dagegen belegt viele Adressen Nur Bezeichner ist von Natur aus ein Zeiger Bei Vereinbarung wird für Array oder String Platz passender Länge reserviert Wie Arrays sind Zeichenketten (da Arrays von Zeichen) in C kein eigener Datentyp 27

28 Zeichenketten #include <stdio.h> int main() { char msg[10] = "Bonjour"; char *p; p = "Huhu"; // Array mit 10 Zeichen // Zeiger auf Zeichen // Konstanter String // Kurzform für msg2 = {'H','e','l','l','o','\0'} char msg2[] = "Hello"; // Compiler ermittelt Laenge printf("%s", "Bonjour"); } // Stringausgabe 28

29 Wie sieht der Speicher nachher aus? p = msg; p[0] = 'H'; p[1] = 'i'; p[2] = '\0'; msg (array) r 36 u 32 o 28 j 24 \0 n 20 o i 16 H B p 4 29

30 Zeichenketten Eine Zeichenkette steht immer auf gleichem Speicherplatz Angabe in Anführungszeichen oder Char-Feld char name[6] = {'H', 'o', 'r', 's', 't', '\0'}; /* '\0' end of string */ printf("%s", name); /* print until '\0' */ Sie kann verändert oder kopiert, aber in C nicht verschoben werden Jede Zeichenkette wird mit \0 abgeschlossen 30

31 Zeichenketten Bsp.: Einlesen einer Zeichenkette int tag, jahr; char monat[16]; scanf("%d %s %d", &tag, monat, &jahr); /* Feldname ist schon Referenz */ Dezember\0 31

32 Zeichenketten kopieren Wenn s und t Zeiger auf Zeichenketten sind: Kopieren einer Zeichenkette NICHT mit: s = t; Setzt nur Zeiger s auf Zeiger t, kopiert nur Zeiger Gilt analog für Felder allgemein 32

33 Zeichenketten kopieren Kopieren einer Zeichenkette z.b. von t nach s: void strcopy(char *s, char *t){ int i = 0; } /* durchlaeuft alle Zeichen */ while (t[i]!= '\0'){ s[i] = t[i]; i++; } /* '\0' noch nicht kopiert */ s[i] = t[i]; 33

34 Zeichenketten kopieren Kopieren einer Zeichenkette z.b. von t nach s: void strcopy(char *s, char *t) { int i = 0; } /* durchlaeuft alle Zeichen */ while((s[i] = t[i])!= '\0') /* Klammer wichtig */ i++; 34

35 Zeichenketten kopieren Kopieren einer Zeichenkette z.b. von t nach s: void strcopy(char *s, char *t) { while((*s = *t)!= '\0'){ /* weist zuerst zu, prueft dann */ s++; /* erhoeht spaeter */ t++; } } 35

36 Zeichenketten kopieren Kopieren einer Zeichenkette z.b. von t nach s: void strcopy(char *s, char *t) { while( (*s++ = *t++) ) ; /* weist zuerst zu, prueft dann, erhoeht nach Ende der Anweisung */ } [Kernighan] 36

37 Zeichenketten dynamisch Erstellen veränderlich langer Zeichenketten in C char* createnewstring(const char* cs) { /* Hilfszeiger, +1 wegen '\0' */ char *newstrg = (char*)malloc(strlen(cs)+1); } if (newstrg!= NULL){ strcpy(newstrg, cs); return newstrg; } return NULL; 37

38 Zeichenketten Bibliotheksfunktionen Zahlreiche Bibliotheksfunktionen in <string.h>, z.b.: char* strcpy(s,ct) char* strcat(s,ct) int strcmp(cs,ct) size_t strlen(cs) Kopiert Zeichenkette aus ct in s, liefert Zeiger auf s hängt Zeichenkette aus ct an s an, liefert Zeiger auf s Vergleicht Zeichenkette in cs mit Zeichenkette in ct, liefert < 0, wenn cs kleiner ist, 0, wenn beide gleich, sonst > 0 Liefert Länge von cs ohne \0 s hat den Typ char*, cs und ct den Typ const char* (werden nicht geändert) 38

39 Zeichenketten Beispiele für strcmp() bzw. strncmp() strcmp("a", "A") ist 0 strcmp("a", "B") ist -1 strcmp("b", "A") ist 1 Auf 4 erste Zeichen beschränkt: strncmp("fassade", "Fass", 4) ist 0 Achtung: strcmp("z", "a") liefert -1, da ASCII-Werte verglichen werden (genaue Rückgabewerte compilerabhängig) Stringlänge ermitteln mit strlen() char str[8] = "Hello"; Was gibt strlen(str) zurück? 5, 6 oder 8??? 39

40 Arrays mit Zeigern Ermöglicht bequeme Speicherung von C-Strings in Array Feld speichert nicht C-Strings selbst, sondern Zeiger auf Strings, die irgendwo anders im Speicher liegen Beispiel const char* suit[4] = { "Hearts", "Diamonds", "Clubs", "Spades" }; Jedes Element von suit zeigt auf einen char* (C-String) Array suit hat feste Größe (4 Zeiger mit je 4 Byte), aber Strings können hier beliebig groß sein Anmerkung: suit[i] i=0..3 kann wg. const nicht verändert werden! 40

41 Kommandozeile (Stringeingabe) Hauptprogramm kann Argumente haben int main(int argc, char *argv[]) argument count: Anzahl der Argumente des Programms bzw. Anzahl der Char-Zeiger in argv[] argument vector: Zeiger auf Vektor/Feld von Zeigern auf Zeichenfolgen, welche die Argumente enthalten Vgl. Java: public static void main( String[] args ) { } Programm kann so mit Anfangswerten versehen werden Zugriff mit z.b.: argv[i] Programmname steht in argv[0] 41

42 Kommandozeile (Stringeingabe) Sinn: Bei Aufruf von Kommandozeile aus kann Programm mit Parametern versorgt werden Ermöglicht so z.b. Batch-Verarbeitung 42

43 BITMANIPULATIONEN 43

44 Bitmanipulationen Logische Operationen zur Verarbeitung einzelner Bits in einem Speicherwort Zur Code-Beschleunigung in der Graphik (z.b. Flags in Bitfolgen), für En- und Decoding, Ansprechen / Steuern von Geräten usw. Beispiele: Motor ein/motor aus Pumpe ein/aus Heizung ein/aus Gerät eingeschaltet Drucker hat kein Papier Kopierer hat Papierstau 44

45 Bitmanipulationen Anzuwenden auf ganzzahlige Variable (z.b. unsigned int) Bitweises UND: a & b Bitweises ODER: a b Bitweises XOR: a ^ b (Exklusiv-ODER) a b a ^ b Bitweises Komplement: ~a (Einerkomplement) Linksshift: a << 2 Rechtsshift: a >> 2 Oft werden Variablen in hexadezimaler Form angegeben 45

46 Bitmanipulationen Beispiel: << Linksshift Verschiebt Daten um angeg. Anzahl von Bits nach links Bits, die links herausfallen, verschwinden Rechts wird mit Nullen aufgefüllt Bsp.: i <<= 4; // Identisch zu i *= 16; 46

47 Bitmanipulationen Schiebeoperationen >> >> 5 ergibt (rechts schieben) << (links schieben) (unsigned nutzen, Ergebnis abhängig von Vorzeichen) << 5 ergibt 47

48 Bitmanipulationen Die einzelnen Operationen (bitweise) & und & ergibt oder ergibt 48

49 Bitmanipulationen Die einzelnen Operationen (bitweise) ^ exklusiv-oder ^ ergibt ~ negieren ~ ergibt 49

50 Bitmanipulationen Anwendung für schnelle Operationen Feststellung, ob ein Wert gerade oder ungerade ist Vertauschen von Werten von Variablen Gerätesteuerung Computergraphik 50

51 Gerätesteuerung Lichter im Haus unsigned char licht; Schlafen1 Bad WC Gäste-WC Küche Schlafen2 Flur Wohnzimmer Wie können alle Lichter im Haus außer dem Flurlicht (soll Wert nicht verändern) mit einem Befehl ausgeschaltet werden? 51

52 Gerätesteuerung Lösung: C-Befehl: licht licht 52

53 Computergraphik Bit Block Transfers sind Operationen, bei der Pixelblock bitweise mit anderem kombiniert wird Z.B. XOR für sog. Rubberband oder Mauscursor Zweimal XOR stellt alten Wert wieder her Zeichenmodus Bsp.: Logische Verknüpfung mit XOR Source-Pixel: Destination-Pixel: Ergebnis:

54 STRUKTUREN IN C 54

55 Verbunddatentypen Mehrere, ggfs. verschiedene, Datentypen werden zu einer (Daten-) Struktur zusammengefasst Benutzername Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod Kontakte struct Messwerte { char name[42]; float hoehe; float breite; int index; } mess1, *mess2; Bild Bsp.: Profildaten in sozialem Netz Zugriff über Punkt-Operator, z.b.: mess1.hoehe Bei Pointern: mess2->hoehe 55

56 Aufbau von C-Structs Gruppen von Variablen Öffentliche Klassen ohne Methoden Können ineinander geschachtelt sein a) struct Name { /* Anweisungen */ } instanzname; b) struct Name { }; /* Anweisungen */ 56

57 Aufbau von C-Structs Definition einer Variablen mit Strukturtyp: struct Name instanzname; Definition eines neuen Struct-Datentyps: typedef struct Name NewType; Dient zur Verwaltung von Datensätzen Wird manchmal auch als Record bezeichnet 57

58 Beispiele für C-Structs Mögliche Datenstruktur für Typen Punkt und Rechteck: struct Point { /* Punkt auf Bildschirm */ int x; int y; }; struct Point p = { 47, 11 }; /* Init. */ struct Rectangle { /* Rechteck */ struct Point p1; struct Point p2; }; typedef struct Rectangle Rect; 58

59 Beispiele für C-Structs struct Birthday { int month, day, year; }; struct Person { char name[80]; float weight; float height; struct { /* embedded structure */ int month; int day; int year; } birth; }; 59

60 Beispiele für C-Structs struct Person you; Zugriff: you.birth.year = 1995; struct Person group[80]; strcpy(group[0].name, "Chantal"); group[0].height = 1.72f; group[0].birth.year = 1996;... Beachte: bei Pointern Pfeil- statt Punktnotation struct Birthday *d = malloc(sizeof(struct Birthday)); d->year = 1997; 60

61 Zuweisung von Strukturen Strukturen können Strukturen gleichen Typs zugewiesen, also einfach kopiert, werden: struct Point { /* Punkt auf Bildschirm */ int x; int y; } p1, p2;... p1.x = 47; p1.y = 11; p2 = p1; /* Werte werden kopiert */ Beide haben gleichen Inhalt, aber verschiedene Stellen im Speicher, anders als Klassen in Java! 61

62 Zusammenfassung Deklarieren eines Structs struct [optional name] { <type> field1;... } [instance list]; Beispiele: struct Foo { int field1; char field2; } foo, *foo_ptr; struct Foo foo2; struct List { int data; struct List *next; }; Zugriff auf Struct-Felder foo.field1; greift auffield1 der Instanz foo von struct Foo zu Pointer-Syntax und Structs * hat weniger Vorrang als. : *foo_ptr.field1; bedeutet *(foo_ptr.field1); Was vielleicht nicht kompiliert Zugriff auf ein Feld in einem Struct - Pointer: (*foo_ptr).field1; foo_ptr->field1; 62

63 Exkurs: Aufzählungsdatentyp Ein enum ist ein Aufzählungstyp mit begrenztem Wertebereich. Alle erlaubten Werte werden festgelegt. enum PrimaryColors { RED = 0, GREEN, BLUE } c; c = GREEN; Optional: Name des enum Per Default, erhält die erste Option den Wert 0 Jeder Option können beliebige Integerwerte zugewiesen werden Hintereinander liegende Optionen bekommen den Wert des Vorgängers plus 1 63

64 Exkurs: Union Eine Union erlaubt die Nutzung eines Speicherbereichs für unterschiedliche Felder union Argument { char charval; int intval; float floatval; }; Optional: Name der Union Eine Änderung von intval ändert floatval und charval! Wird für constrained-type containers benutzt Üblicherweise zusammen mit einem enum, das festlegt, welches Feld gültig ist 64

65 Exkurs: Speicherung von struct und union union-elemente teilen sich Speicherplatz Speichern der Elemente in union nicht nacheinander, sondern übereinander 65

66 Auswertungsreihenfolge /w/c/language/operator_pr ecedence 66

67 Lernziele Zeiger in C kennen und anwenden können Wissen, wie der Speicherplatz in C verwaltet wird Den Zusammenhang zwischen Arrays und Zeigern kennen und anwenden können Bitmanipulationen und ihre Anwendung kennen C-Strukturen (Records) kennen und anwenden können 67

68 FRAGEN? 68

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes Variablen Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes v ist Stück im Speicher, der 4 Bytes lang ist Speicherzugriff? Über Adressen!

Mehr

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder

Mehr

Dynamische Speicherverwaltung

Dynamische Speicherverwaltung Dynamische Speicherverwaltung INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Bisjetzt Beispiel Ranglistenprogramm für Sportveranstaltungen Besser - genaue Anzahl Teilnehmer

Mehr

Teil 5: Zeiger, Felder, Zeichenketten Gliederung

Teil 5: Zeiger, Felder, Zeichenketten Gliederung Teil 5: Zeiger, Felder, Zeichenketten Gliederung Zeiger und Adressen Felder (Arrays) Zeichenketten (Strings) Zeigerarithmetik Mehrdimensionale Felder Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik

Mehr

Teil 5: Felder, Zeiger, Zeigerarithmetik Gliederung

Teil 5: Felder, Zeiger, Zeigerarithmetik Gliederung Teil 5: Felder, Zeiger, Zeigerarithmetik Gliederung Felder (Arrays) Mehrdimensionale Felder Zeiger und Adressen Zeigerarithmetik Felder Mehrdimensionale Felder Zeiger und Adressen Zeigerarithmetik Felder

Mehr

C-Kurs 2010 Pointer. 16. September v2.7.3

C-Kurs 2010 Pointer. 16. September v2.7.3 C-Kurs 2010 Pointer Sebastian@Pipping.org 16. September 2010 v2.7.3 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. C-Kurs Mi Konzepte, Syntax,... printf, scanf Next

Mehr

Arrays (Felder/Vektoren)

Arrays (Felder/Vektoren) Arrays (Felder/Vektoren) Zusammenfassung mehrerer Variablen des gleichen Typs unter einem Namen im Speicher direkt hintereinander abgelegt Definition: Typname Arrayname [Größe]; Beispiel: int ar [5]; Zugriff

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)

Mehr

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz Patrick Schulz patrick.schulz@paec-media.de 29.04.2013 1 Einführung Einführung 2 3 4 Quellen 1 Einführung Einführung 2 3 4 Quellen Hello World in Java Einführung 1 public class hello_ world 2 { 3 public

Mehr

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin Fakutltät IV Technische Universität Berlin 5. Mai 2014 Inhaltsverzeichnis 1 2 3 4 5 6 7 Überblick Beispielprogramm in Java Beispielprogramm in C 1 2 3 4 5 6 7 Beispielprogramm in Java Beispielprogramm

Mehr

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 9. Zeiger Arbeitsspeicher / Adressen Der Arbeitsspeicher des Computers (RAM) besteht aus einem Feld von Speicherzellen, beginnend bei Adresse

Mehr

Kontrollfragen Mikrocontroller Programmiersprache C H1203 Felix Rohrer

Kontrollfragen Mikrocontroller Programmiersprache C H1203 Felix Rohrer Block 1 1. Welcher Wert hat w? int w = 034; 28 (Dezimal) 034 wird als Octal interpretiert 34oct = 28dec 2. Wie lauten die Ergebnisse? unsigned int a = 3, b = 5, c = 7; unsigned int x, y, z; x = a == 3;

Mehr

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer)

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer) Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Steuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Zeigern

Mehr

Zeiger (engl. Pointer)

Zeiger (engl. Pointer) Zeiger (engl. Pointer) Zeiger Ein Zeiger (engl. Pointer) speichert eine Adresse, unter der ein Wert im Speicher des Computers gespeichert werden kann. Eine Variable im Gegensatz speichert einen Wert. Der

Mehr

Programmieren in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff

Programmieren in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff Programmieren in C Speicher anfordern, Unions und Bitfelder Prof. Dr. Nikolaus Wulff Vergleich: Felder und Strukturen Felder müssen Elemente vom selben Typ enthalten. Strukturen können Elemente unterschiedlichen

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 2 Arrays und Pointer Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät statische Arrays Deklaration (eindimensional): /* 40

Mehr

F Zeiger, Felder und Strukturen in C

F Zeiger, Felder und Strukturen in C F Zeiger, Felder und Strukturen in C F Zeiger, Felder und Strukturen in C F.1 Zeiger(-Variablen) 1 Einordnung Konstante: Bezeichnung für einen Wert a 0110 0001 Variable: Bezeichnung eines Datenobjekts

Mehr

Informatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1

Informatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Informatik Vorlesung 08 Pointer (Dynamisch) 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Pointer (Zeiger) Dynam. Speicher Bisher: Speicherbedarf muss

Mehr

C- Kurs 08 Zeiger. Dipl.- Inf. Jörn Hoffmann leipzig.de. Universität Leipzig Ins?tut für Informa?k Technische Informa?

C- Kurs 08 Zeiger. Dipl.- Inf. Jörn Hoffmann leipzig.de. Universität Leipzig Ins?tut für Informa?k Technische Informa? C- Kurs 08 Dipl.- Inf. Jörn Hoffmann jhoffmann@informa?k.uni- leipzig.de Universität Leipzig Ins?tut für Informa?k Technische Informa?k Überblick Datentyp zur Verwaltung von Adressen (auf Speicherplätze)

Mehr

Praxis der Programmierung

Praxis der Programmierung Arrays, Pointer, Parameterbergabe Institut für Informatik und Computational Science Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Arrays (Felder/Vectoren) 2 Arrays: Motivation Gegeben:

Mehr

einlesen n > 0? Ausgabe Negative Zahl

einlesen n > 0? Ausgabe Negative Zahl 1 Lösungen Kapitel 1 Aufgabe 1.1: Nassi-Shneiderman-Diagramm quadratzahlen Vervollständigen Sie das unten angegebene Nassi-Shneiderman-Diagramm für ein Programm, welches in einer (äußeren) Schleife Integer-Zahlen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

Teil 6: Strukturen und Unionen Gliederung

Teil 6: Strukturen und Unionen Gliederung Teil 6: Strukturen und Unionen Gliederung Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Strukturen 6.2 Strukturen Typdefinitionen

Mehr

Einführung Pointer. C-Kurs 2013, 2. Vorlesung. Nico Andy

Einführung Pointer. C-Kurs 2013, 2. Vorlesung. Nico Andy Einführung Pointer C-Kurs 2013, 2. Vorlesung Nico nico@freitagsrunde.org Andy andrew@freitagsrunde.org http://wiki.freitagsrunde.org 10. September 2013 This work is licensed under the Creative Commons

Mehr

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Teil 7: Matrizen, Vektoren und dynamische Speicherverwaltung Martin Nolte Abteilung für Angewandte Mathematik Universität Freiburg

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 8: Felder und Zeichenketten Prof. Dr. Gliederung Programmiersprachen 1. Von der Maschinensprache zu C 2. Die Struktur von C-Programmen 3. Variable und Datentypen

Mehr

Algorithmen und Datenstrukturen. Funktionen in C. float a = sin(alpha); M. Herpers, Y. Jung, P. Klingebiel

Algorithmen und Datenstrukturen. Funktionen in C. float a = sin(alpha); M. Herpers, Y. Jung, P. Klingebiel Algorithmen und Datenstrukturen Funktionen in C a sin( ) float a = sin(alpha); M. Herpers, Y. Jung, P. Klingebiel 1 Lernziele Formatierte Ein- und Ausgabe (vertieft) Verwendung von Funktionen in C kennen

Mehr

INE1 Arrays, Zeiger, Datenstrukturen

INE1 Arrays, Zeiger, Datenstrukturen INE1 Arrays, Zeiger, Datenstrukturen Arrays Felder von Elementen gleichen Typs Verwenden von Adressen: Zeiger Datenstrukturen mit struct Zeiger auf Datenstrukturen Spezielle Zeiger und komplexe Deklarationen

Mehr

Probeklausur Name: (c)

Probeklausur Name: (c) Einführung in die Praktische Informatik 30.1.2013 Probeklausur Name: Teil I: Datentypen (20 Punkte) Lösen sie die Probleme, indem sie die korrekten Lösungen ankreuzen bzw. in die vorgesehenen Freiräume

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)

Mehr

6. Zeiger Allgemeines Definition eines Zeigers

6. Zeiger Allgemeines Definition eines Zeigers 6. Zeiger www.c-programme.de Stefan Thiemert Kapitel 6 - Seite 1 von 6 6. 1. Allgemeines Zeiger spielen in der Programmierung eine wichtige Rolle. Sie sind wichtig, bei der Arbeit mit Arrays und Funktionen.

Mehr

Bereits behandelt: Einfache Datentypen / Variablen. Schleifen und Verzweigungen. Funktionen. Heute: Felder, Zeiger, Referenzen. Freispeicherverwaltung

Bereits behandelt: Einfache Datentypen / Variablen. Schleifen und Verzweigungen. Funktionen. Heute: Felder, Zeiger, Referenzen. Freispeicherverwaltung Kompaktkurs C++ Themen C 1 Bereits behandelt: Einfache Datentypen / Variablen Schleifen und Verzweigungen Funktionen Heute: Felder, Zeiger, Referenzen Freispeicherverwaltung Zeichenketten Kommandozeilenargumente

Mehr

RO-Tutorien 3 / 6 / 12

RO-Tutorien 3 / 6 / 12 RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 2 AM 06./07.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft

Mehr

C-Kurs 2011: Arrays, Strings, Pointer

C-Kurs 2011: Arrays, Strings, Pointer C-Kurs 2011: Arrays, Strings, Pointer Sebastian@Pipping.org 15. September 2011 v3.0.33 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. Ohne Pointer geht nichts. 2 Pointer

Mehr

Praxis der Programmierung

Praxis der Programmierung Zeichenketten (Strings), Ein- und Ausgabe Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Zeichenketten (Strings)

Mehr

Typ : void* aktuelle Parameter Pointer von beliebigem Typ

Typ : void* aktuelle Parameter Pointer von beliebigem Typ 2. Funktionen - Prototypvereinbarung typangabe funktionsname(parameterliste); - Funktionsdefinition typ funktionsname(parameterliste){ Anweisung - Funktionstyp -> Typ der Funktionswertes zulaessige Typangaben

Mehr

U8 7. Übung U8 7. Übung

U8 7. Übung U8 7. Übung U8 7. Übung U8 7. Übung Dynamische Speicherverwaltung Generisches Sortieren Aufgabe 7 U8.1 U8-1 Dynamische Speicherverwaltung U8-1 Dynamische Speicherverwaltung Erzeugen von Feldern der Länge n: mittels:

Mehr

C-Programmierung: Ausdrücke und Operatoren#Division.2F

C-Programmierung: Ausdrücke und Operatoren#Division.2F C-Programmierung: Ausdrücke und Operatoren#Division.2F http://de.wikibooks.org/wiki/c-programmierung:_ausdrücke_und_operatoren#division_.2f This Book Is Generated By Wb2PDF using RenderX XEP, XML to PDF

Mehr

Betriebssysteme, Rechnernetze und verteilte Systeme 1. Crashkurs C (2)

Betriebssysteme, Rechnernetze und verteilte Systeme 1. Crashkurs C (2) Betriebssysteme, Rechnernetze und verteilte Systeme 1 Crashkurs C (2) Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/

Mehr

Physische Datenstrukturen

Physische Datenstrukturen Elementare Datentypen Strukturierte Datentypen Zeiger Seite 1 Einfache Datentypen Datentyp char Verwendung: ASCII-Zeichen Wertebereich: alle darstellbaren Zeichen, 8 bit lange Ganzzahlen im Intervall -128

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Einführung in C Bieniusa Software Entwicklung 1 2/ 50 Warum C in SE1? Meist verwendete Sprache weltweit Viele wichtige

Mehr

Praxis der Programmierung

Praxis der Programmierung Arrays, Pointerarithmetik, Konstanten, Makros Institut für Informatik und Computational Science Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Arrays (Felder/Vektoren) 2 Arrays: Motivation

Mehr

K Ergänzungen zur Einführung in C

K Ergänzungen zur Einführung in C K Ergänzungen zur Einführung in C K Ergänzungen zur Einführung in C K.1 Zeiger, Felder und Zeichenketten Zeichenketten sind Felder von Einzelzeichen (char), die in der internen Darstellung durch ein \0

Mehr

8. Referenzen und Zeiger

8. Referenzen und Zeiger 8. Referenzen und Zeiger Motivation Variable werden in C++ an speziellen Positionen im Speicher abgelegt. An jeder Position befindet sich 1 Byte. Sie sind durchnummeriert beginnend bei 0. Diese Positionen

Mehr

Zeiger in C und C++ Zeiger in Java und C/C++

Zeiger in C und C++ Zeiger in Java und C/C++ 1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für Referenztypen (Klassen und Arrays) verwendet,

Mehr

Teil 6: Strukturen und Unionen Gliederung

Teil 6: Strukturen und Unionen Gliederung Teil 6: Strukturen und Unionen Gliederung Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Strukturen 6.2 Strukturen Ursprung in Pascal als Datentyp record, Verbunddatentyp Strukturtyp

Mehr

Betriebssysteme. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk.

Betriebssysteme. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk. Betriebssysteme Tafelübung 4. Speicherverwaltung http://ess.cs.tu-dortmund.de/de/teaching/ss217/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware

Mehr

Betriebssysteme. Agenda. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk.

Betriebssysteme. Agenda. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk. Betriebssysteme Tafelübung 4. Speicherverwaltung http://ess.cs.tu-dortmund.de/de/teaching/ss217/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware

Mehr

Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher

Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher Arvid Terzibaschian 1 Zusammengesetzte Datentypen 2 Wozu zusammengesetzte Datentypen? Anforderung: Sie sollen ein Kundenverzeichnis

Mehr

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B. C-Crash-Kurs Eine kurze, keinesfalls erschöpfende Einführung in die Sprache C für Studierende, die eine strukturierte imperative Programmiersprache beherrschen. Die Vorstellung erfolgt am Beispiel von

Mehr

Zeiger und dynamischer Speicher

Zeiger und dynamischer Speicher Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Zuletzt aktualisiert: 09.12.2013, 07:49 Uhr

Mehr

Dynamische Speicherverwaltung

Dynamische Speicherverwaltung Dynamische Speicherverwaltung Tim Dobert 17.05.2013 Inhaltsverzeichnis 1 Allgemeines zur Speichernutzung 2 2 Ziel und Nutzen 2 3 Anwendung in C 2 3.1 malloc............................... 3 3.2 calloc...............................

Mehr

Operatoren in C. Gastvorlesung Andreas Textor

Operatoren in C. Gastvorlesung Andreas Textor Operatoren in C Gastvorlesung - 11.01.10 Andreas Textor andreas.textor@hs-rm.de Terminologie Operand 4 + 2 Operand Operator Unterscheidung nach Anzahl Operanden Unäre, Binäre und Ternäre Operatoren Z.B.:!x;

Mehr

C/C++-Programmierung

C/C++-Programmierung 1 C/C++-Programmierung Speicherverwaltung, 0, const Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Speicherverwaltung

Mehr

Zeiger in C und C++ Zeiger in Java und C/C++

Zeiger in C und C++ Zeiger in Java und C/C++ 1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für Referenztypen (Klassen und Arrays) verwendet,

Mehr

Inhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15

Inhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15 Vorwort... 15 1 Einstieg in die Welt von C 17 1.1 Die Sprache C... 17 1.2 Die C-Standardbibliothek... 18 1.3 Die nötigen Werkzeuge für C... 21 1.4 Übersetzen mit der Entwicklungsumgebung... 23 1.5 Übersetzen

Mehr

Advanced Programming in C

Advanced Programming in C Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer

Mehr

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 17/18 Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 05.10.2017 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2017

Mehr

C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen. Leibniz Universität IT Services Anja Aue

C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen. Leibniz Universität IT Services Anja Aue C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen Leibniz Universität IT Services Anja Aue Zeiger (Pointer) Verweis auf eine Speicherstelle. Speicherung einer Speicheradresse.

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von

Mehr

Pointer und Arrays. INE1, Montag M. Thaler, Office TG208. ZHAW, M. Thaler, K. Rege, G.

Pointer und Arrays. INE1, Montag M. Thaler, Office TG208.  ZHAW, M. Thaler, K. Rege, G. Pointer und Arrays INE1, Montag M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Variable Speicherplatz Datenwert über Name ansprechbar hat Typ hat Adresse (Speicheradresse)

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen 3.2 Auswahl an Stringfunktionen W. Tasin, M.Sc. Fakultät 04 tasin@hm.edu Allgemeines (1) Die ANSI-Norm definiert auch nützliche Funktionen zur ASCIIZ-Stringbearbeitung.

Mehr

Programmierkurs C++ Variablen und Datentypen

Programmierkurs C++ Variablen und Datentypen Programmierkurs C++ Variablen und Datentypen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Überblick Welche Datentypen gibt es in

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Funktionen Rückblick Operatoren logische Verknüpfungen Zusammengesetzte Operatoren ( Zuweisungsoperatoren ) Kontrollstrukturen Bedingte Anweisungen (if-abfrage, switch-konstrukt)

Mehr

C-Pointer (Zeiger, Adressen) vs. C++ Referenzen

C-Pointer (Zeiger, Adressen) vs. C++ Referenzen C-Pointer (Zeiger, Adressen) vs. C++ Referenzen Der Pointer (C/C++): In C/C++ ist der Pointer ein eigener Datentyp, der auf Variablen/Objekte zeigen kann. Indem man den Pointer dereferenziert, gewinnt

Mehr

Crashkurs C++ - Teil 1

Crashkurs C++ - Teil 1 Crashkurs C++ - Teil 1 Intro Speicherverwaltung Variablen, Pointer, Referenzen Felder statische & dynamische Allozierung Birgit Möller & Denis Williams AG Bioinformatik & Mustererkennung Institut für Informatik

Mehr

6. Bearbeitung von Strings in C Bearbeitung von Strings in C

6. Bearbeitung von Strings in C Bearbeitung von Strings in C Bearbeitung von Strings in C 6-1 Definition des String: 6. Bearbeitung von Strings in C Zeichenstrings werden als Felder von Zeichen abgespeichert: char [ ] ; Wie die Daten (Zeichenfolge)

Mehr

Tafelübung zu BS 4. Speicherverwaltung

Tafelübung zu BS 4. Speicherverwaltung Tafelübung zu BS 4. Speicherverwaltung Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2015/bs/

Mehr

Übersicht. Speichertypen. Speicherverwaltung und -nutzung. Programmieren in C

Übersicht. Speichertypen. Speicherverwaltung und -nutzung. Programmieren in C Übersicht Speichertypen Speicherverwaltung und -nutzung Speichertypen Beim Laden eines Programms in den Speicher (Programmausführung) kommen 3 verschiedene Speicherbereiche zum Einsatz: Text Segment (Code

Mehr

Grundlagen und Konzepte von C Datenstrukturen

Grundlagen und Konzepte von C Datenstrukturen Grundlagen und Konzepte von C Datenstrukturen Ausarbeitung von Andreas Gadelmaier Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik,

Mehr

4.2 Programmiersprache C

4.2 Programmiersprache C 4.2.1. Elementare Datentypen (signed) int, unsigned int, (signed) short (int), unsigned short (int), (signed) long (int), unsigned long (int) Elementare Datentypen für ganze Zahlen mit oder ohne Vorzeichen.

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 3 Typen und Speicherverwaltung Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Literatur (2) Kernighan and Ritchie, The

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr

Vorlesung 6: Operatoren, Logische Ausdrücke

Vorlesung 6: Operatoren, Logische Ausdrücke Vorlesung 6: Operatoren, Logische Ausdrücke Inhalt Organisatorisches Offene Übungen Operatoren Logische Ausdrücke Dr. J. Raimann 1 Offene Übungen (durch Tutoren betreut) montags 1. und 2. Block (8.15 Uhr

Mehr

RO-Tutorien 17 und 18

RO-Tutorien 17 und 18 RO-Tutorien 17 und 18 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery TUTORIENWOCHE 2 AM 10.05.2012 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 4: Prof. Dr. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit Gliederung Programmiersprachen 1. Von der Maschinensprache zu C 2. Die Struktur von C-Programmen

Mehr

Dynamischer Speicher

Dynamischer Speicher Dynamischer Speicher C-Kurs 2012, 3. Vorlesung Tino Kutschbach tino.kutschbach@campus.tu-berlin.de http://wiki.freitagsrunde.org 13. September 2012 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

Einführung Programmierpraktikum C Michael Zwick

Einführung Programmierpraktikum C Michael Zwick Einführung Programmierpraktikum C Michael Zwick Vorlesung, Übung & Fragestunde Dr.-Ing. Michael Zwick Raum Z945 zwick@tum.de (089) 289 23609 Tutorium Ab Dienstag: Auswahl Tutoriumsplatz auf www.ldv.ei.tum.de/lehre/computertechnik

Mehr

Praxis der Programmierung

Praxis der Programmierung Zusammengesetzte Datentypen, dynamische Speicherverwaltung Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Zusammengesetzte

Mehr

Elementare Datentypen in C++

Elementare Datentypen in C++ Elementare Datentypen in C++ bool signed/unsigned char signed/unsigned short int signed/unsigned int signed/unsigned long int (signed/unsigned long long int) float double long double void enum char Der

Mehr

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie

Mehr

Programmieren in C SS Vorlesung 4, Dienstag 14. Mai (Strings, Zeiger, Allokation, Strukturen)

Programmieren in C SS Vorlesung 4, Dienstag 14. Mai (Strings, Zeiger, Allokation, Strukturen) Programmieren in C SS 2019 Vorlesung 4, Dienstag 14. Mai 2019 (Strings, Zeiger, Allokation, Strukturen) Prof. Dr. Peter Thiemann Professur für Programmiersprachen Institut für Informatik Universität Freiburg

Mehr

Datenstrukturen. InE1 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert

Datenstrukturen. InE1 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert Datenstrukturen InE1 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was gehtes? Rangliste Winti-Marathon benötigte Information pro Teilnehmer Variable Typ Daten Name String Vorname

Mehr

Organisatorisches. Übungsleiter: Karsten Otto Homepage: Aufgaben

Organisatorisches. Übungsleiter: Karsten Otto Homepage:  Aufgaben Organisatorisches Übungsleiter: Karsten Otto (otto@inf.fu-berlin.de) Homepage: http://www.inf.fu-berlin.de/lehre/ss04/sysi/ Aufgaben Montags im Netz Vorbesprechung Dienstag/Mittwoch in den Übungen Abgabe

Mehr

Betriebssysteme. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk.

Betriebssysteme. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk. Betriebssysteme Tafelübung 4. Speicherverwaltung https://ess.cs.tu-dortmund.de/de/teaching/ss2018/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de https://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware

Mehr

Programmieren in Java

Programmieren in Java Ein Projekt 2 Wiederholung: new-operator Werte nicht-primitiver Datentypen müssen mit new erzeugt werden Es gibt keine Möglichkeit primitive Daten mit new zu erzeugen Beispiele int[] myarray = new int[]

Mehr

Strings (Zeichenketten)

Strings (Zeichenketten) Strings (Zeichenketten) INE1, Montag M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Interaktion mit Computer oft textbasiert Fragen wie wird Text dargestellt? wie wird

Mehr

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

Informatik. Wiederholung Felder (Arrays), string. Vorlesung Informatik Vorlesung 04 Wiederholung Felder (Arrays), string 19. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Ein C++ Programm: Wiederholung #include

Mehr

Informatik. Strukturen und Aufzählungstypen. Vorlesung

Informatik. Strukturen und Aufzählungstypen. Vorlesung Informatik Vorlesung 06 Strukturen und Aufzählungstypen 03. Dezember 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Datentypen Die bisher benutzten Datentypen waren

Mehr

Dynamische Speicherverwaltung

Dynamische Speicherverwaltung Dynamische Speicherverwaltung 1/ 23 Dynamische Speicherverwaltung Tim Dobert 17.05.2013 Dynamische Speicherverwaltung 2/ 23 Gliederung 1 Allgemeines zur Speichernutzung 2 Ziele und Nutzen 3 Anwendung in

Mehr

Arrays,Strings&Pointer in C/C++

Arrays,Strings&Pointer in C/C++ Arrays,Strings&Pointer in C/C++ Vortrag Mathias Reich Am 21.5.2002 Pointer Da zur Zeit der Compelierung des Programms nicht immer der Umfang der zu bearbeitenden Daten feststeht muss man sich - in manchen

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der

Mehr

Zeichenketten (1) Literale von Zeichenketten werden in doppelte Anführungszeichen gesetzt

Zeichenketten (1) Literale von Zeichenketten werden in doppelte Anführungszeichen gesetzt Zeichenketten (1) Literale Literale von Zeichenketten werden in doppelte Anführungszeichen gesetzt "Hallo Welt" Mehrere solcher Literale gelten als eine Zeichenkette, wenn sie nur durch Whitespaces (Leerzeichen,

Mehr

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1 Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1 Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Das C++ Typsystem simple structured integral enum

Mehr

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch) JAVA BASICS 2. Primitive Datentypen 1. Warum Java? zunehmend weit verbreitet einfach und (relativ) sicher keine Adressrechnung, aber Pointer keine gotos kein Präprozessor keine globalen Variablen garbage

Mehr

Variablen und Parameter

Variablen und Parameter D3kjd3Di38lk323nnm Variablen und Parameter Eine Variable repräsentiert einen Speicherbereich, der einen veränderbaren Wert enthält. Eine Variable kann eine lokale Variable, ein Parameter (value, ref oder

Mehr