Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher

Größe: px
Ab Seite anzeigen:

Download "Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher"

Transkript

1 Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher Arvid Terzibaschian 1

2 Zusammengesetzte Datentypen 2

3 Wozu zusammengesetzte Datentypen? Anforderung: Sie sollen ein Kundenverzeichnis anlegen. Für jeden Kunden sollen Kenndaten gespeichert werden: Name Adresse Umsätze der letzten Monate Kundennummer Telefon Wie kann man das Modellieren? 3

4 Wozu zusammengesetzte Datentypen? Anforderung: Sie sollen ein Kundenverzeichnis anlegen. Wie kann man das Modellieren? Ansatz 1: Eine Array-Variable für jedes Feld (für 256 Kunden) Probleme: Zusammengehörigkeit der Variablen nicht sichergestellt Übergabe an Funktionen nur einzeln möglich Andere Möglichkeit? int kundennummer[256]; char *name[256]; char *adresse[256]; Kunde: Name,Adresse, Telefon Umsätze,Kundennummer 4

5 Zusammengesetzte Datentypen: structs Anforderung: Sie sollen ein Kundenverzeichnis anlegen. Lösung: structs erlauben das zusammensetzen von Datentypen zu neuen, komplexeren Datentypen Modellierung mit structs: Kunde: Name,Adresse, Telefon Umsätze,Kundennummer int kundennummer[256]; char *name[256]; char *adresse[256]; struct t_kunde { int kundennummer; char name[64]; char adresse[64]; ; dynamischer String: Platz für 63 Zeichen struct t_kunde kunden[256]; 5

6 Zusammengesetzte Datentypen: structs structs erlauben Zusammensetzen komplexer Datentypen Definition meist außerhalb von Funktionen der Ausdruck struct { definiert immer einen Datentyp: neuer struct-datentyp: struct t_kunde struct t_kunde { int kundennummer; char name[64]; char adresse[64]; ; Elemente des struct-datentyps: Deklaration wie Variablen/Zeiger struct t_kunde kunden[256]; neue (Array-)Variable kunden mit Datentyp struct t_kunde 6

7 struct-datentypen zusammengesetzte Datentypen sind elementares Konzept der Softwareentwicklung bilden Zusammengehörigkeit bestimmter Daten direkt ab erleichtern das Modellieren von komplexen Problemen viele Dinge der Realität können mit zusammengesetzten Datentypen wesentlich besser modelliert werden als durch elementaren Zahlen und Strings == [ ]?? erhöhen die Lesbarkeit und damit Wartbarkeit des Quellcodes z.b. ist eine struct-variable kunden wesentlich aussagekräftiger als ein Array für je Adresse, Telefonnummer 7

8 Arbeiten mit struct-variablen Zugriff auf einzelne Elementvariablen: per Punkte-Operator strcpy(kunde1.name, Bill Gates ); kunde1.kundennummer = 12; Initialisieren von struct-variablen: in Initialwerte in Reihenfolge der struct-elemente angeben Zuweisen von struct-variablen struct kunde_t { int kundennummer; char name[64]; char adresse[64]; ; /*<- neuer Typ */ /* neue Variable: */ struct kunde_t kunde1; struct kunde_t kunde2; Warum einmal strcpy und einmal Bill Gates? struct kunde_t kunde3 = {20, Bill Gates, USA ; strcpy(kunde1.adresse, Zehlendorf ); kunde2 = kunde1; // Kopiert Werte aller Elementvariablen strcpy(kunde1.adresse, Lichtenberg ); Value-Semantik wie bei elementaren Variablen: Kopieren aller Werte Was ergibt printf(kunde2.adresse)? 8

9 struct und Speicher Elemente der struct-variablen liegen hintereinander im Speicher Beispiel: struct kunde_t kunden[3]; struct kunde_t { int kundennummer; char name[64]; char adresse[64]; ; /*<- neuer Typ */ /* neue Variable: */ struct kunde_t kunde1; struct kunde_t kunde2; Adresse Element Größe 0xF000 kunde[0].kundennummer 4 Byte kunde[0] 0xF000+4 kunde[0].name 64 Byte 0xF kunde[0].adresse 64 Byte 0xF kunde[1].kundennummer 4 Byte kunde[1] kunde[1].name 64 Byte kunde[1].adresse 64 Byte 0xF kunde[2].kundennummer 4 Byte kunde[2] kunde[2].name 64 Byte kunde[2].adresse 64 Byte 9

10 struct und Funktionen struct kunde_t { int kundennummer; char name[64]; char adresse[64]; ; /*<- neuer Typ */ Parameter von Funktionen mit struct-datentyp void drucke_kunde(struct kunde_t k) { printf( Name: %s,k.name); printf( Adresse: %s,k.adresse); printf( KdNr: %d,k.kundennummer); Bei Aufruf Call-By-Value-Semantik nur Kopie wird Funktion übergeben Rückgabewerte mit struct-datentyp struct kunde_t neuer_kunde() { kunde_t k = {0, Mustermann, Musterstraße 123 ; return k; 10 auch hier wird Werte-Kopie als Ergebnis zurückgegeben

11 struct und Funktionen struct-parameter werden immer per Call-By-Value übergeben: void drucke_kunde(struct kunde_t k) { printf( Name: %s,k.name); printf( Adresse: %s,k.adresse); printf( KdNr: %d,k.kundennummer); struct kunde_t { int kundennummer; char name[64]; char adresse[64]; ; /*<- neuer Typ */ Folgerungen: int main() { kunde_t k1 = {10, Karl-Heinz, Berlin ; drucke_kunde(k); unnötiges Kopieren von Werten Rechen- und Speicherkosten Funktionen können Werte nicht bearbeiten k1 wird kopiert und dann druck_kunde mit Kopie aufgerufen Alternative: Call-by-Reference-Semantik via struct-zeigern 11

12 struct und Funktionen Call-By-Reference mit struct-zeigern void drucke_kunde(struct kunde_t *k) { printf( Name: %s,k->name); printf( Adresse: %s,k->adresse); printf( KdNr: %d,k->kundennummer); Folgerungen: kein unnötiges kopieren Veränderungen von struct-variablen durch Funktionen möglich Problem: Zeiger können nicht initialisiert sein Programmierer hat volle Verantwortung struct kunde_t { int kundennummer; char name[64]; char adresse[64]; ; /*<- neuer Typ */ Operator -> greift auf Elemente von struct-zeigern zu Achtung: keine Gültigkeitsprüfung (!= NULL) des Zeigers k int main() { kunde_t k1 = {10, Karl-Heinz, Berlin ; drucke_kunde(&k1); struct-zeiger auf Variable k1 wird übergeben 12

13 Einschub: Typedef typedef erlaubt Aliasnamen für Datentypen zu erstellen: struct kunde_t { int kundennummer; char *name; char *adresse; ; typedef struct kunde_t customer; alter Datentyp Aliasname für Datentyp Aliasname customer kann wie struct kunde_t verwendet werden: struct kunde_t kunde1; = customer kunde1; 13

14 struct und Funktionen Erhöhen der Kundennummer mit Call-By-Value typedef struct kunde_t { int kdnr; char name[64]; char adresse[64]; cust; Call-By-Reference (~Pointer) Daten 3x kopiert Daten 0x kopiert cust inc_kundennr(cust c) { c.kdnr++; return c; 2 int main() { cust kunde = {1, Frank, Berlin ; 1 kunde = inc_kundennr(kunde); 3 printf( Nr: %d,kunde.kdnr); void inc_kundennr(cust *c) { c->kdnr++; ; int main() { cust kunde = {1, Frank, Berlin ; inc_kundennr(&kunde); printf( Nr: %d,kunde.kdnr); bei Aufruf der Funktion beim return in der Funktion beim Zuweisen nach der Funktion aber: Compiler kann hier oft optimieren maximale Geschwindigkeit aber: Pointer sind fehleranfälliger 14

15 structs in structs struct-datentypen können andere structs enthalten: struct schueler_t { const char name[64]; int note; ; struct raum_t { int haus; int etage; int nr; ; struct kurs_t { const char lehrer[64]; const char name[64]; struct schueler_t schueler[30]; struct raum_t raum; ; struct kurs_t k; strcpy(k.name, Mathe ); k.raum.haus = 3; k.schueler[1].note = 1; structs können sich nicht selbst enthalten nur als Zeiger für z.b. dynamische Strukturen 15

16 Zusammenfassung struct Bilden zusammengesetzte Datentypen wichtig für Modellierung komplexer Probleme structs können structs enthalten Können als Datentypen für Variablen und Arrays verwendet werden Können als Parameter von Funktionen genutzt werden Call-By-Value-Semantik ohne Zeiger Werte-Kopien Call-By-Reference-Semantik mit Zeigern Adress-übergabe 16

17 Dynamischer Speicher der Heap 17

18 Dynamischer Speicher: Warum? Daten bisher gespeichert in elementaren Variablen Größe und Anzahl der Variablen vorher festgelegt struct-variablen Größe und Anzahl der Variablen vorher festgelegt Arrays und Strings Größe und Anzahl der Arrays/Strings vorher festgelegt Problem: oft Anzahl Elemente/ Speicherplätze erst zur Laufzeit berechenbar max. Größe anzunehmen Speicherverschwendung 18

19 Dynamischer Speicher: Warum? Problem: oft ist Größe der benötigten Datenspeicher vor Laufzeit des Programms nicht bekannt Länge von Arrays und Strings erst zur Laufzeit bestimmbar immer max. Größe anzunehmen ist Speicherverschwendung Lösung: Dynamische Speicherreservierung mit malloc() und free() Speicherreservierung on demand Vorteile: optimale Speichernutzung und dynamische Strukturen Nachteile: komplexere Programmlogik fehleranfälligerer Code Speicherverlust möglich (Memory-Leaks) 19

20 Speicherbereiche eines Programms gesamter Speicher des Programmes. Vom Betriebssystem zugewiesen 20 Programm-Stack: wird automatisch verwaltet alle Variablen Größe und Anzahl der Variablen alle Arrays zur Compile-Time bekannt alle Parameter von Funktionsaufrufen temporäre Werte zur Berechnung Funktionsaufrufsliste (Funktions-Stack) statische Daten konstante Werte z.b. bei Initialisierung von Strings und Variablen statischer Maschinencode kompilierte Anweisungen Inhalt der ausführbaren Maschinencode- Datei Programm-Heap dynamischer Speicherbereich Programm kann Speicher dynamisch vom Was ist das? Betriebssystem anfordern wird durch Programm in C mit malloc() verwaltet kann vom Programm freigegeben werden in C mit free();

21 Dyn. Speicher vom Heap Anforderung: ganze Zahlen von 1 N in Array speichern Größe des Arrays zur Laufzeit nicht bekannt Lösung: Funktion malloc() nutzen, um Speicher für n Elemente zur Laufzeit zur Verfügung zu stellen: Funktion void* malloc(int nbytes); reserviert n Bytes Speicher vom Heap und gibt Anfangsadresse als Zeiger zurück Stack int n = 25; int i; int *nums; nums = malloc(n * sizeof(int)); for(i = 0;i<n;++i { nums[i] = i; statische Daten statischer Code Heap [~RAM] sizeof(datentyp) bestimmt die Größe eines Datentyps in Byte Erinnere: Zeiger kann wie Array betrachtet werden 21

22 Dyn. Speicher vom Heap Funktion malloc() nutzen, um Speicher für n Elemente zur Laufzeit zur Verfügung zu stellen: Funktion void* malloc(int nbytes); reserviert n Bytes Speicher vom Heap und gibt Anfangsadresse als Zeiger zurück Problem: int n = 25; int i; int *nums; nums = malloc(n * sizeof(int)); for(i = 0;i<n;++i { nums[i] = i; Stack statische Daten statischer Code Heap [~RAM] Speicher wird nicht automatisch wieder freigegeben Unterschied zu klassischen Variablen und Arrays (Stackvariablen) Memory-Leaks sind die Folge Lösung: Funktion free() zum Freigeben von Speicher 22

23 Dyn. Speicher vom Heap Speicher alloziieren und wieder freigeben: Speicher für 25 int-werte auf Heap reservieren Werte wie ein Array nutzen Speicher freigeben (optional: Zeiger nums als invalid kennzeichnen) int n = 25; int i; int *nums; nums = malloc(n * sizeof(int)); for(i = 0;i<n;++i { nums[i] = i; free(nums); nums = NULL; Stack statische Daten statischer Code Heap [~RAM] free erwartet Zeiger auf Anfang des Speicherbereichs Programmierer hat volle Verantwortung, free() auch aufzurufen Grundregel: zu jedem malloc() gehört [irgendwann] ein free() 23

24 Speicher vom Heap: Probleme Grundsätzliches Problem: Speicher vom Heap muss Programm verwalten zu jedem malloc() muss irgendwann ein passendes free() aufgerufen werden sonst: Memory-Leaks und Segmentation-Fault Für alle Programmiersprachen gilt: Es gibt keine triviale Lösung zur dynamischen Speicherverwaltung Probleme treten immer dann auf, wenn Speicher zu früh, gar nicht, oder mehrmals freigegeben wird Lösungsansatz: Einsatz von Zeigern und Speicher vom Heap so wenig wie möglich & so viel wie nötig. bei Funktionen Call-By-Value sicherer als Call-By-Pointer bei dynamische Arrays/Strings reichen oft auch temporäre Array-Variablen mit fester Maximallänger Stack statische Daten statischer Code Heap [~RAM] 24

25 Dynamischer Speicher und Zur Erinnerung: Strings = Char-Arrays = Zeiger auf das erste Element dynamische Strings können auch auf dem Heap gespeichert werden Beispiel: char tmp[2048]; printf( Wie geht s? ); fgets(tmp,2048,stdin); printf(tmp); vs char *tmp = malloc(2048*sizeof(char)); printf( Wie geht s? ); fgets(tmp,2048,stdin); printf(tmp); free(tmp); tmp ist char-array-variable Speicher im Stack automatisch gelöscht Nachteil: Stack-Speicher oft begrenzt 25 tmp ist Zeiger Speicher vom Heap mit malloc Nachteil: manuelles löschen mit free pflicht Vorteil: Heap-Speicher viel größer als Stack

26 Dynamischer Speicher und Strukturen Speicher alloziieren und freigeben funktioniert analog zu elementaren Typen: Speicher für 128 Kunden auf Heap reservieren Wie ein Array nutzen Speicher freigeben Gibt es in diesem Beispiel ein Problem? Problem: dynamischer Speicher und Rückgabewert: ohne free: Memory-Leak? typedef struct kunde_t { int kdnr; char name[64]; char adresse[64]; cust; cust* new_database(int n) { int i; cust *kunden; kunden = malloc(n * sizeof(cust)); for(i = 0;i<n;++i) { sprintf(kunden[i].name, Kunde %d,i); free(kunden); return kunden; mit free: Absturz des Programmes 26

27 Dynamischer Speicher und Rückgabewerte Frage der Zuständigkeit Wer gibt den Speicher wieder frei? Nicht trivial zu lösen. cust* create_database(int n) { int i; cust *kunden; kunden = malloc(n * sizeof(cust)); for(i = 0;i<n;++i) { sprintf(kunden[i].name, Kunde %d,i); free(kunden); return kunden; 27 typedef struct kunde_t { int kdnr; char name[64]; char adresse[64]; cust; void delete_database(cust* db) { if(db!= NULL) free(db); möglicher Lösungsansatz : Funktionspaar ähnlich malloc() und free() dynamische Speicherallokationsfunktionen mit create_**** Funktion reserviert Speicher auf Heap und gibt Datenstruktur zurück dynamische Speicherfreigabefunktionen mit delete_***** Funktion löscht Speicherreservierung für bestimmte Datenstruktur Aufrufer der create_* und delete_*-funktionen ist zuständig

28 Zusammenfassung: Dynamischer Speicher Programm kann dynamisch Speicher auf Heap anfordern malloc(n*sizeof(datentyp)) alloziiert Speicher für ein Array mit n Elementen sowohl elementare als auch zusammengesetzte Datentypen erlaubt free(adresse) gibt Speicher wieder frei jedem malloc() sein free() ohne free(): Memory-Leak mehr als ein free(): Programmabsturz dynamische Speicherverwaltung benötigt Zeiger Zeiger = typische Fehlerquelle Programmierer trägt volle Verantwortung für korrekten Programmcode korrektes Arbeiten mit dynamischem Speicher ist niemals trivial! sollte nur bei Alternativlosigkeit eingesetzt werden 28

29 Vielen Dank! Bei Fragen einfach eine Mail an: 29

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

Einführung in die Programmierung Konstanten, dynamische Datenstrukturen. Arvid Terzibaschian

Einführung in die Programmierung Konstanten, dynamische Datenstrukturen. Arvid Terzibaschian Einführung in die Programmierung Arvid Terzibaschian 1 Konstanten 2 Motivation Unveränderliche, wichtige Werte mathematische Konstanten z.b. PI String-Konstanten wie z.b. häufige statische Meldungen mögliche

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

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

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

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

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

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

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

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

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

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

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

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

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

Grundlagen der Informatik 11. Zeiger

Grundlagen der Informatik 11. Zeiger 11. Zeiger Motivation Zeiger und Adressen Zeiger und Funktionen Zeiger und Arrays Dynamische Objekte Grundlagen der Informatik (Alex Rempel) 1 Motivation Dynamische Speicherverwaltung Oft müssen große

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

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

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

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 Dynamische Datentypen Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Dynamische Datentypen 2 Dynamische Datentypen

Mehr

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18 C++ Teil 5 Sven Groß 13. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 13. Mai 2016 1 / 18 Themen der letzten Vorlesung Funktionen Funktionsüberladung, Signatur Rekursion const-deklaration Referenzen

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

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

Informatik 1 ( ) D-MAVT F2011. Pointer, Structs. Yves Brise Übungsstunde 6

Informatik 1 ( ) D-MAVT F2011. Pointer, Structs. Yves Brise Übungsstunde 6 Informatik 1 (251-0832-00) D-MAVT F2011 Pointer, Structs Organisatorisches Übungsstunde 20110413 Da ich abwesend bin, bitte Gruppe von David Tschirky besuchen. Mittwoch, 20110413, 13:15-15:00 Uhr, VAW

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

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

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free() Übungspaket 29 Dynamische Speicherverwaltung malloc() und free() Übungsziele Skript In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten

Mehr

C++ Teil 6. Sven Groß. 23. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 15

C++ Teil 6. Sven Groß. 23. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 15 C++ Teil 6 Sven Groß 23. Nov 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 23. Nov 2015 1 / 15 Themen der letzten Vorlesung const-deklaration Referenzen Zeiger Felder Sven Groß (IGPM, RWTH Aachen) C++

Mehr

Funktionen: Rückgabewert

Funktionen: Rückgabewert Funktionen: Rückgabewert Jede Funktion in C++ (außer Konstruktoren und Destruktoren siehe später) MUSS einen Rückgabewert-Typ vereinbaren. Gibt sie nichts zurück, muss der Rückgabetyp void sein. Jede return-anweisung

Mehr

Dynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren

Dynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Dynamische Datentypen Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Probleme mit Feldern (variabler Länge) man kann sie nicht direkt kopieren und zuweisen Probleme mit

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

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstante und statische Elemente C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja

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

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

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

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

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine

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

C++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16

C++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16 C++ Teil 5 Sven Groß IGPM, RWTH Aachen 8. Mai 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai 2015 1 / 16 Themen der letzten Vorlesung Live Programming zu A2 Gleitkommazahlen Rundungsfehler Auswirkung

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

Programmierwerkstatt. Arrays, Pointer und Referenzen

Programmierwerkstatt. Arrays, Pointer und Referenzen Programmierwerkstatt Arrays, Pointer und Referenzen Zum Inhalt Wir wollen Euch: das Wesentliche vermitteln Fehlerquellen verdeutlichen Verständnis ist uns wichtig programming by coincidence vermeiden Themen

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

Zeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach 10.

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

Mehr

Propädeutikum. Dipl.-Inf. Frank Güttler

Propädeutikum. Dipl.-Inf. Frank Güttler Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) guettler@informatik.uni-leipzig.de Universität Leipzig Institut für Informatik Technische Informatik

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

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

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens mit C++ und Matlab SS2013 Inhalt Bis jetzt: Heute: Entwicklungsumgebung

Mehr

INE1 Speicherverwaltung und zweidimensionale Arrays. Speicherorganisation Dynamischer Speicher in C Zweidimensionale Arrays

INE1 Speicherverwaltung und zweidimensionale Arrays. Speicherorganisation Dynamischer Speicher in C Zweidimensionale Arrays INE1 Speicherverwaltung und zweidimensionale Arrays Speicherorganisation Dynamischer Speicher in C Zweidimensionale Arrays 1 Speicherorganisation in C 2 von 48 Speicherorganisation Anlegen eines Arrays:

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

Einleitung Grundlagen Erweiterte Grundlagen Zusammenfassung Literatur. C: Funktionen. Philip Gawehn

Einleitung Grundlagen Erweiterte Grundlagen Zusammenfassung Literatur. C: Funktionen. Philip Gawehn C: Funktionen Philip Gawehn Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg Do., 22.05.2014 1 / 23 Gliederung

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

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

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

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

Einführung in die Programmierung für Physiker. Die Programmiersprache C Strukturen ("struct...")

Einführung in die Programmierung für Physiker. Die Programmiersprache C Strukturen (struct...) Einführung in die Programmierung für Physiker Die Programmiersprache C Strukturen ("struct...") Marc Wagner Institut für theoretische Physik Johann Wolfgang Goethe-Universität Frankfurt am Main WS 2013/14

Mehr

Einführung in die Programmierung für Physiker. Die Programmiersprache C Strukturen ("struct...")

Einführung in die Programmierung für Physiker. Die Programmiersprache C Strukturen (struct...) Einführung in die Programmierung für Physiker Die Programmiersprache C Strukturen ("struct...") Marc Wagner Institut für theoretische Physik Johann Wolfgang Goethe-Universität Frankfurt am Main WS 2017/18

Mehr

Kapitel 5: Funktionen. Inhalt

Kapitel 5: Funktionen. Inhalt Wintersemester 2007/08 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl

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

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

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

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

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

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:

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

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:

Mehr

Programmieren I. Kapitel 12. Referenzen

Programmieren I. Kapitel 12. Referenzen Programmieren I Kapitel 12. Referenzen Kapitel 12: Referenzen Ziel: Die Wahrheit über Objekte Lebensdauer Speicherverwaltung Parameterübergabemechanismen in Methoden Gleichheiten, Kopien Arrays Speicherbereinigung

Mehr

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl

Mehr

Repetitorium Programmieren I + II

Repetitorium Programmieren I + II Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 24. September 2012 Agenda 1 Funktionen Aufbau und Anwendung Call by Value Call by Reference Überladen von Funktionen Default

Mehr

Einführung in die Programmierung Arrays, Zeiger, Strings. Arvid Terzibaschian

Einführung in die Programmierung Arrays, Zeiger, Strings. Arvid Terzibaschian Einführung in die Programmierung Arvid Terzibaschian 1 Arrays 2 Arrays: Motivation Gegeben: monatliche Durchschnittstemperaturen der letzten 5 Jahre Gesucht: Mittelwerte für Jahre, Monate, Jahreszeiten,

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

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

Visuelle Kryptographie. Anwendung von Zufallszahlen

Visuelle Kryptographie. Anwendung von Zufallszahlen Visuelle Kryptographie Anwendung von Zufallszahlen Verschlüsseln eines Bildes Wir wollen ein Bild an Alice und Bob schicken, so dass Verschlüsseln eines Bildes Wir wollen ein Bild an Alice und Bob schicken,

Mehr

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free() Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free() Übungsziele: Skript: In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten

Mehr

Grundlagen der OO- Programmierung in C#

Grundlagen der OO- Programmierung in C# Grundlagen der OO- Programmierung in C# Technische Grundlagen 1 Dr. Beatrice Amrhein Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung 2 Visual Studio 3

Mehr

Felder, Zeiger und Adreßrechnung

Felder, Zeiger und Adreßrechnung Felder, Zeiger und Adreßrechnung Felder bestehen aus Variablen eines einzigen Datentyps. Bisher kennen wir eindimensionale Felder. In C sind Felder mit beliebigen Dimensionen möglich. Unsere räumliche

Mehr

Einführung in die Programmierung Konstanten, dynamische Datenstrukturen. Arvid Terzibaschian

Einführung in die Programmierung Konstanten, dynamische Datenstrukturen. Arvid Terzibaschian Einführung in die Programmierung Arvid Terzibaschian 1 Konstanten 2 Motivation Unveränderliche, wichtige Werte mathematische Konstanten z.b. PI String-Konstanten wie z.b. häufige statische Meldungen mögliche

Mehr

Java Referenzdatentypen genauer betrachtet

Java Referenzdatentypen genauer betrachtet Informatik 1 für Nebenfachstudierende Grundmodul Java Referenzdatentypen genauer betrachtet Kai-Steffen Hielscher Folienversion: 23. Januar 2018 Informatik 7 Rechnernetze und Kommunikationssysteme Referenzdatentypen

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

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa Peter Zeller AG Softech FB Informatik TU Kaiserslautern Speichermanagement Wie viel Speicher braucht ein Programm? Wofür wird Speicher benötigt? Wie ist der Speicher

Mehr

Strukturen in C. Strukturen stellen eine Zusammenfassung von Datenelementen unterschiedlichen Typs unter einem Namen dar.

Strukturen in C. Strukturen stellen eine Zusammenfassung von Datenelementen unterschiedlichen Typs unter einem Namen dar. Strukturen in C Strukturen stellen eine Zusammenfassung von Datenelementen unterschiedlichen Typs unter einem Namen dar. Dadurch sind sie vergleichbar mit Feldern, die eine Zusammenfassung (Reihung) von

Mehr

Teil 8: Dynamische Speicherverwaltung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden

Teil 8: Dynamische Speicherverwaltung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Teil 8: Dynamische Speicherverwaltung Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Inhaltsverzeichnis 8 Dynamische Speicherverwaltung... 3 8.1

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

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

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

Programmierung und Angewandte Mathematik

Programmierung und Angewandte Mathematik Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Ablauf Was sind Funktionen/Methoden

Mehr

Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5

Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5 Informatik 1 (251-0832-00) D-MAVT F2010 Schleifen, Felder Nachbesprechung Blatt 3 Aufgabe 1 ASCII... A > a Vorsicht: Lösen Sie sich von intuitiven Schlussfolgerungen. A ist nicht grösser als a, denn in

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

Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife

Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife 303 Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife durchgeführt wird. 304 305 for-schleifen sind in Aktivitätsdiagrammen

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, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)

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

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

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

9. Vektoren. (auch Felder/array)

9. Vektoren. (auch Felder/array) 9. Vektoren (auch Felder/array) Motivation Hat man mehrere Objekte gleichen Datentyps, so kann man sie explizit deklarieren, wenn die Anzahl bekannt ist double x1,x2,x3,x4; Nachteile: versagt, -wenn die

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

Dynamisches Speichermanagement

Dynamisches Speichermanagement Dynamisches Speichermanagement Proseminar C-Programmierung - Grundlagen und Konzepte Timo Minartz timo.minartz@informatik.uni-hamburg.de Wissenschaftliches Rechnen Fachbereich Informatik Universität Hamburg

Mehr

Praxisorientierte Einführung in C++ Lektion: "Dynamische Speicherverwaltung"

Praxisorientierte Einführung in C++ Lektion: Dynamische Speicherverwaltung Praxisorientierte Einführung in C++ Lektion: "Dynamische Speicherverwaltung" Christof Elbrechter Neuroinformatics Group, CITEC May 15, 2014 Christof Elbrechter Praxisorientierte Einführung in C++ May 15,

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