Praxis der Programmierung
|
|
|
- Julius Kalb
- vor 9 Jahren
- Abrufe
Transkript
1 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
2 Zusammengesetzte Datentypen 2
3 Zusammengestzte Datentypen Motivation Aufgabe: Kundenverzeichnis anlegen Für jeden Kunden erfassen: Name, Adresse, Kundennummer, Telefonnummer, Umsatz,... Wie kann man das in C umsetzen? 3
4 Zusammengesetzte Datentypen Motivation (2) Array für jeden Kunden? Array für jedes Merkmal? char* name[1024]; char* address[1024]; short phone[1024]; short id[1024]; float b_volume[1024];... unmöglich wegen der versch. Datentypen Zusammengehörgkeit der Variablen nicht sichergestellt Übergabe an Funktionen nur einzeln Strukturen (structs) zur Definition komplexer Datentypen, die sich aus mehreren Datentypen zusammensetzen 4
5 Zusammengesetzte Datentypen Motivation (2) Array für jeden Kunden? Array für jedes Merkmal? char* name[1024]; char* address[1024]; short phone[1024]; short id[1024]; float b_volume[1024];... unmöglich wegen der versch. Datentypen Zusammengehörgkeit der Variablen nicht sichergestellt Übergabe an Funktionen nur einzeln Strukturen (structs) zur Definition komplexer Datentypen, die sich aus mehreren Datentypen zusammensetzen 5
6 Stukturen Strukturtyp: - selbst definierter Datentyp - zusammengesetzt aus Komponenten verschiedener Typen Variable von Typ Struktur (Verbund/Record) kann Datensatz speichern Kundennr. Nachname Vorname Straße Hausnr. PLZ Wohnort Umsatz short char[64] char[64] char[64] short short char[64] float Komponenten haben einen eigenen Namen und Typ (statt Index) 6
7 Deklaration eines Strukturtyps struct name { komponententyp 1 komponentenname 1; komponententyp 2 komponentenname 2;. komponententyp n komponentenname n; }; struct ist Schlüsselwort Datentyp: struct name Anzahl der Komponenten bei Deklaration festgelegt Semikolon nach } (kein Anweisungsblock!) 7
8 Deklaration eines Strukturtyps Beispiel char* name[1024]; char* address[1024]; short phone[1024]; short id[1024]; float b_volume[1024]; = struct customer { short id; char name[64]; char adress[64]; short phone; float b_volume; }; struct customer ctms[1024]; 8
9 Strukturtypen Strukturtypen Warum? definieren immer einen Datentyp bilden die Zusammengehörigkeit von Daten ab bilden die Realität direkter ab bessere Modellierung von Anwendungsdomänen erleichtertes Code-Verständnis erleichterte Wartung des Codes 9
10 Strukturvariablen Deklaration: struct name variablenname; Variable vom zusammengesetzten Typ struct name besteht aus mehreren Komponentenvariablen bei Stukturtypdeklaration vereinbart gleichzeitige Vereinbarung von Strukturtyp und -variablen möglich: struct point { float x; float y; } pt1; struct point pt2, pt3; // Def. neuer Datentyp (Strukturtyp) // zwei Komponenten (Member) x und y pt1, pt2, pt3 als (Struktur-) Variablen dieses neuen Datentyps deklariert 10
11 Zugriff auf Komponentenvariablen 1. Punktoperator: Strukturvariable.Komponentenvariable Beispiele: pt1.x meyer.name meyer.address lesender und schreibender Zugriff: strcpy(meyer.name, "Meyer, Jens"); strcpy(meyer.address, "14482 Potsdam, A-Bebel-Str. 89"); printf("%s\n\%s\verb\n", meyer.name, meyer.address); 11
12 2. Pfeiloperator: Pointer auf Strukturvariable->Komponentenvariable Beispiel: (&pt1)->x (&meyer)->name Pfeil: Minuszeichen und Größerzeichen lesender und schreibender Zugriff: printf("adresse: %s\n", (&meyer)->address); Wie kann die Adresse in ihre Komponenten zerlegt werden? Strukturen als Komponenten von Strukturen 12
13 Strukturen als Komponenten von Strukturen struct address { char street[64]; short number; short zip_code; char city[64]; }; struct customer { char name[64]; struct address adr;... }; struct customer meyer; strcpy(meyer.name, "Meyer, Jens"); strcpy(meyer.adr.street, "A.-Bebel-Str."); meyer.adr.number = 89; 13
14 Initialisierung von Strukturvariablen 1. mit Punkt- oder Pfeiloperator 2. mit Initialisierungslisten nur direkt bei der Definition der Strukturvariablen wie bei Arrays (mit Ausdrücken passenden Typs), z.b.: struct customer meyer = { "Meyer, Jens", { "A.-Bebel-Str.", 89, 14482, "Potsdam" }... }; 3. Zuweisung von struct-variablen: customer krause = meyer; // Kopie der WERTE aller Elemente!!! 14
15 Strukturen als Parameter und Rückgabewerte von Funktionen Voraussetzung: Deklaration des Strukturtyps außerhalb und vor den Funktionen Übergabe wie einfache Datentypen (call-by-value beachten!): void print_customer (struct customer c) { printf("%s\n", c.name); printf("%s %d\n", c.adr.street, c.adr.number); printf("%d %s\n", c.adr.zip_code, c.adr.city); } struct point new_point () { return struct point new = {0, 0}; } oft unnötiges Kopieren großer Datenmengen im Speicher 15
16 Pointer auf Struktuen als Parameter Simulation von call-by-reference durch Übergabe von Pointern: void print_customer (struct customer * c) { printf("%s\n", c->name); printf("%s %d\n", c->adr.street, c->adr.number); printf("%d %s\n", c->adr.zip_code, c->adr.city); } int main() { struct customer meyer = {... }; print_customer(&meyer); } Veränderung der Werte des Originals (c) möglich Gefahr: Parameter kann nicht oder mit NULL initialisiert sein (Laufzeitfehler) 16
17 Vereinbarung eigener Typnamen Vereinbarung eines Aliasnamens für bereits deklarierte Datentypen typedef Datentyp Aliasname; typedef int integer; Anwendung: Vereinfachung von Typnamen typedef struct customer Customer; Customer meyer; typedef unsigned long long ULL Vorbereitung Portierung maschinenabhängiger Datentypen typedef int INT; typedef short INT; 17
18 Strukturen im Speicher Elemente von Strukturvariablen liegen hintereinander im Speicher, z.b.: struct kt { int kundennummer; char name[64]; char adresse[64]; }; struct kt kunde[3]; 18
19 Dynamische Speicherverwaltung 19
20 Datentypen im Speicher bisher: Größe und Anzahl der Variablen bei Deklaration festlegen Variablen elementarer Datentypen (auch Pointer-Variablen) Strings, Arrays Strukturen (structs) Problem: Größe von Arrays/Strings kann oft erst zur Laufzeit bestimmt werden immer maximale Größe annehmen ist oft kritische Speicherverschwendung Lösung: dynamische Speicherreservierung on demand Nachteile: komplexere Programmlogik, hohe Fehleranfälligkeit, möglicher Datenverlust 20
21 Speicherbereiche eines Programms 1. Bereich für ausführbaren Maschinencode Bereich für Maschinencode (kompilierte Anweisungen) Bereich für statische Daten (Konstanten und statische Strings) 2. Programm-Stack (zur Compile-Zeit angelegt) Variablen, Arrays, Funktionsparameter temporäre Werte (bei Berechnungen) Aufrufstack für Funktionen 3. Programm-Heap (vom Programm zur Laufzeit verwaltet) dynamisch als Pointer auf den Heap angefordert (in C: malloc()) dynamisch wieder freigegeben (in C: free()) 21
22 Speicherbereiche eines Programms 1. Bereich für ausführbaren Maschinencode Bereich für Maschinencode (kompilierte Anweisungen) Bereich für statische Daten (Konstanten und statische Strings) 2. Programm-Stack (zur Compile-Zeit angelegt) Variablen, Arrays, Funktionsparameter temporäre Werte (bei Berechnungen) Aufrufstack für Funktionen 3. Programm-Heap (zur Laufzeit verwaltet) dynamisch als Pointer auf den Heap angefordert (in C: malloc()) dynamisch wieder freigegeben (in C: free()) 22
23 Speicherbereiche eines Programms 1. Bereich für ausführbaren Maschinencode Bereich für Maschinencode (kompilierte Anweisungen) Bereich für statische Daten (Konstanten und statische Strings) 2. Programm-Stack (zur Compile-Zeit angelegt) Variablen, Arrays, Funktionsparameter temporäre Werte (bei Berechnungen) Aufrufstack für Funktionen 3. Programm-Heap (zur Laufzeit verwaltet) dynamisch als Pointer auf den Heap angefordert (in C: malloc()) dynamisch wieder freigegeben (in C: free()) 23
24 Bibliotheksfunktionen zur dynamischen Speicherverwaltung in <stdlib.h> zum Anfordern von Speicher (liefert Pointer zurück), z.b.: void * malloc(size t size) Beispiel: ganze Zahlen von 1 bis N in einem Array speichern int N, i; int * nums; scanf("%d", &N); nums = malloc(n * sizeof(int)); for(i = 0; i < N; ++i) { nums[i] = i+1; } 24
25 Bibliotheksfunktionen zur dynamischen Speicherverwaltung (2) Freigeben von reserviertem Speicher (Pointer auf Speicherbereich übergeben): void free(void * pointer) am Beispiel: free(nums); // Speicherbereich zurueckgegeben nums = NULL; // nums zeigt nicht mehr auf den Speicherbereich keine automatische Speicherfreigabe Zu jedem malloc() gehört (irgendwann) genau ein free(). 25
26 Probleme mit dynamischer Speicherverwaltung Programmierer ist voll verantwortlich keine Freigabe Speicher läuft voll mit Daten, auf die nicht mehr zugegriffen werden kann / die nicht mehr gebraucht werden Freigabe eines nicht (mehr) alloziierten Bereichs Programmabsturz korrekte/geeignete Stelle zur Speicherfreigabe oft nicht klar: } char * create_string(int n) { // n ist Laenge des Strings char * str; str = malloc((n+1)*sizeof(char)); return str; free(str); // Problem??? 26
27 Dynamisch gespeicherte Daten als Rückgabewerte char * create_string(int n) { // n ist Laenge des Strings char * str; str = malloc((n+1)*sizeof(char)); return str; } void delete_string(char * s) { if (s!= NULL) { free(s); // s = NULL; hier nutzlos - warum?! } } Zu jedem Aufruf von create string gehört genau ein Aufruf von delete string, gefolgt von Zuweisung des NULL-Pointers! 27
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
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
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.
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
Dynamischer Speicher
Dynamischer Speicher C-Kurs 2012, 3. Vorlesung Tino Kutschbach [email protected] http://wiki.freitagsrunde.org 13. September 2012 This work is licensed under the Creative Commons Attribution-ShareAlike
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
Dynamische Speicherverwaltung
Dynamische Speicherverwaltung INE2 M. Thaler, [email protected] Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Bisjetzt Beispiel Ranglistenprogramm für Sportveranstaltungen Besser - genaue Anzahl Teilnehmer
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
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
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,
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)
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.
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
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
7. Übung Informatik II - Objektorientierte Programmierung
7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber
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
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
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
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)
C-Propädeutikum Höhere Datentypen
C-Propädeutikum Höhere Datentypen Dipl.-Inf. Stefan Freitag [email protected] Universitätsrechenzentrum Universitätsbibliothek Universität Leipzig basiert auf den Originalfolien von Jörn Hoffmann
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
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
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)
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
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!
6 Speicherorganisation
Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für
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
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
Ü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
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
C++ Teil 7. Sven Groß. 30. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 13
C++ Teil 7 Sven Groß 30. Nov 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 30. Nov 2015 1 / 13 Themen der letzten Vorlesung Zeiger, Felder (Wdh.) dynamische Speicherverwaltung Sven Groß (IGPM, RWTH Aachen)
Zeiger und dynamischer Speicher
Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling [email protected] Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Zuletzt aktualisiert: 09.12.2013, 07:49 Uhr
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue
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
Ü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
Anregungen zu Übung 2
Anregungen zu Übung 2 Allgemeine Informatik II - SS 2007 Was sind Arrays und wie kann man sie verwenden? Ein Array ist ein spezieller Datentyp, der mehrere Werte zu einer Einheit zusammenfasst. Er ist
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
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
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
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
Praxis der Programmierung
Liste, Ausnahmefehler, Template-Funktionen und -Klassen Institut für Informatik und Computational Science Henning Bordihn 1 Stack als einfach verkettete Liste 2 Aufgabe 1 1. Kopieren Sie aus /home/rlehre/w13
II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )
Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Rekursion Datenstrukturen Merge S ( split, s, merge ) Beispiel:
Typische Speicherfehler in C
Typische Speicherfehler in C Thorsten Ploß Informatik Universität Hamburg Proseminar: C-Grundlagen und Konzepte 17.05.2013 1 / 13 Inhaltsverzeichnis Einleitung Klassische Speicherverwaltung - Fehlerquellen
C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14
C++ Teil 6 Sven Groß 27. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 27. Mai 2016 1 / 14 Themen der letzten Vorlesung Musterlösung A2 Wdh.: Zeiger und Felder Kopieren von Feldern Dynamische Speicherverwaltung
Array-Verwaltung. Array-Verwaltung im Speicher Illustration. Zuweisung von Arrays. Speicherbereinigung. Aliasierung Eine Besonderheit
im Speicher Der Stack Der Heap von Arrays Eine Besonderheit Folie 1 Motivation Betrachten wir folgende Vereinbarung: int[] numbers = new int[6]; Jedes Array wird als zusammenhängender Bereich im Speicher
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
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
Einstieg in die Informatik mit Java
1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung
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
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:
Einleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders
Typisierung Effiziente Programmierung Thomas Schnieders Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 2018-04-26 Thomas Schnieders Typisierung 1
Übersicht. Informatik 1 Teil 9: komplexe Datentypen (Strukturen, Enumerationen, Unions)
Übersicht 9.1 Strukturen (Verwendung) 9.2 Strukturen (Typdeklaration) 9.3 Strukturen (Variablendeklaration) 9.4 Felder aus Strukturen 9.5 Zugriff auf Strukturkomponenten 9.6 Zugriff auf Strukturkomponenten
Speicherklassen (1) Lokale Variablen
Speicherklassen (1) Lokale Variablen Lokale Variablen beschränken sich auf die Funktionen, in denen sie definiert werden Sind in der Funktion gekapselt können also nur in der Funktion verändert werden
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
Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
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,
Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden
Javaprogrammierung mit NetBeans Variablen, Datentypen, Methoden Programmieren 2 Java Bezeichner Bezeichner: Buchstabe _ $ Buchstabe _ $ Ziffer Groß- und Kleinbuchstaben werden strikt unterschieden. Schlüsselwörter
U4-1 Aufgabe 3: einfache malloc-implementierung
U4 3. Übung U4 3. Übung Besprechung der Aufgabe 2: wsort Aufgabe 3: malloc-implementierung Ziele der Aufgabe Zusammenhang zwischen "nacktem Speicher" und typisierten bereichen verstehen Funktion aus der
Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
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
Arrays. Einleitung. Deklarieren einer Array Variablen
Arrays Einleitung bisher jede Variable einzeln deklariert: 12 3 14 12 32 32 3 32 5 3 double sum; int count; ÿ Sie können Zweck und Aufbau von Array-Datentypen erklären ÿ Sie können einen Array korrekt
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,
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
Kapitel 6: Dynamische Speicherverwaltung
Kapitel 6: Dynamische Speicherverwaltung Dieses Kapitel beschreibt die Operatoren new und delete, mit denen dynamisch Speicher reserviert und freigegeben wird. Außerdem wird im Detail eingegangen auf:
Hydroinformatik I: Referenzen und Zeiger
Hydroinformatik I: Referenzen und Zeiger Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 06. Januar
EEPROM Strukturen speichern über SPI-Bus
EEPROM Strukturen speichern über SPI-Bus Experiment EEPROMstruct 7 A.Schultze / DK4AQ 18.06.2013 Es soll eine Tabelle aus verschiedenartigen Informationen im EEPROM abgelegt und wieder gelesen werden.
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
int i=1; //Integerzahl i anlegen und mit 1 initialisieren float wert; //Floatzahl deklarieren scanf( %f,&wert); //Wert über Tastatur eingeben
Datenfelder (Array) Seite 1 von 7 Bei den bisherigen Programmen wurde für jede verwendete Variable (oder für jedes Objekt) ein eigener Typ und Name vergeben. Die Initialisierung, d.h. die Belegung mit
C++ Notnagel. Ziel, Inhalt. Programmieren in C++
C++ Notnagel Ziel, Inhalt Ich versuche in diesem Dokument noch einmal die Dinge zu erwähnen, die mir als absolut notwendig für den C++ Unterricht und die Prüfungen erscheinen. C++ Notnagel 1 Ziel, Inhalt
