Teil 6: Strukturen und Unionen Gliederung
|
|
- Mina Richter
- vor 5 Jahren
- Abrufe
Transkript
1 Teil 6: Strukturen und Unionen Gliederung Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung
2 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Strukturen 6.2
3 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Strukturen Ursprung in Pascal als Datentyp record, auch Verbunddatentyp bzw. Strukturtyp (in C) kann Komponenten (Variablen) verschiedener Typen enthalten: Personal- Nachname Vorname Straße Haus- Postleit- Wohnort Gehalt nummer nummer zahl int char[20] char[20] char[20] int int char[20] float Gruppierung logisch zusammenhängender Daten z. B. Datum, Adresse, Personendaten, geometrische Objekte, Lesen und Schreiben auf externe Datenträger als Einheit 6.3
4 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Strukturvariablen-Definition Variable eines Strukturtyps = aus Komponentenvariablen zusammengesetzte Variable Strukturvariable Komponentenvariable 1 Komponentenvariable 2... Komponentenvariable n 6.4
5 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Strukturtyp-Definition frei definierter, zusammengesetzter Datentyp feste Anzahl von Komponenten struct Name typ1 komponentenvariable_1; typ2 komponentenvariable_2;... typn komponentenvariable_n; }; der Typname ist "struct Name" struct Name strukturvariable; keine Funktionen als Komponenten ( OOP) 6.5
6 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Beispiel-Definition struct Adresse char strasse[20]; int hausnummer; int postleitzahl; char stadt[20]; }; struct Student int matrikelnummer; char name[20]; char vorname[20]; struct Adresse wohnort; }; struct Student meyer, mueller; // 2 Studenten struct Student semester[50]; // Feld mit 50 Studenten 6.6
7 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Übergabe an Funktionen call-by-value wie bei elementaren Datentypen int, char, float, etc. Initialisierungslisten struct Student meyer = 66202, "Meyer", "Herbert", "Schillerplatz", 20, 73730, "Esslingen" } }; 6.7
8 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Zugriff auf Komponentenvariable meyer.matrikelnummer = ; strcpy (meyer.name, "Meyer"); meyer.wohnort.postleitzahl = 73733; strcpy (meyer.wohnort.stadt, "Esslingen"); printf ("%6d %5d %s\n", meyer.matrikelnummer, meyer.wohnort.postleitzahl, meyer.name); 6.8
9 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Varianten der Definition mit Strukturname/Etikett (üblich) struct Koordinaten float x; float y; } punkt1; struct Koordinaten punkt2, punkt3; ohne Strukturname/Etikett (unüblich) struct float x; float y; } punkt1, punkt2, punkt3; 6.9
10 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Struktur-Zuweisungen, Vergleich direkte Zuweisung möglich struct Koordinaten punkt2 = 1.5, 3.0}, punkt3; punkt3 = punkt2; alle Komponentenwerte der Variablen punkt2 den jeweiligen Komponenten der Variablen punkt3 zugewiesen ABER: Prüfung auf Gleichheit if (punkt2 == punkt3) ist nicht möglich! Größe einer Strukturvariablen im Arbeitsspeicher sizeof (struct Koordinaten) 6.10
11 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Selektion über Zeiger Punktoperator. und Pfeiloperator -> struct Koordinaten float x; float y; } punkt1; struct Koordinaten punkt1 = 1.5, 3.0}, *ppunkt; ppunkt = &punkt1; Frage: Wie greife ich auf Komponenten über den Zeiger ppunkt zu? 6.11
12 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Selektion über Zeiger Punktoperator. und Pfeiloperator -> struct Koordinaten float x; float y; } punkt1; struct Koordinaten punkt1 = 1.5, 3.0}, *ppunkt; ppunkt = &punkt1; Komponenten-Selektion über Zeiger auf 2 Arten möglich: ppunkt->x bzw. (*ppunkt).x z.b. ppunkt->x = 3; (*ppunkt).x = 3; 6.12
13 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Zeiger und geschachtelte Strukturen Strukturvariablen als Komponenten struct Vektor struct Koordinaten *anfang; struct Koordinaten *ende; }; Zeiger vom Typ Vektor struct Vektor vec, *pvec; vec.anfang = &punkt2; vec.ende = &punkt3; pvec = &vec;... pvec->anfang->x bzw. 6.13
14 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Stringvariable in Strukturen Strings als Komponenten struct Name char nachname[20]; char *vorname; }; struct Name maier = "Maier", "Herbert"}; char nachname[20]; alle Zeichen gehören zur Strukturvariablen, = String innerhalb der Struktur char *vorname; strukturexterner (konstanter) String 6.14
15 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Typdefinitionen mittels typedef 6.15
16 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Was ist typedef? Vergabe eines neuen Namens (Alias) neuername für einen schon bekannten oder soeben definierten Datentyp typedef bekanntertyp neuername; Beispiele: typedef unsigned long int UINT; typedef float REAL; UINT a = ; REAL b; 6.16
17 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Anwendung spart Schreibarbeit Portierung von Programmen mit maschinenabhängigen Datentypen nicht portable Datentypen treten nur einmal im Programm auf (in der typedef-vereinbarung) Beispiel: einheitlicher 32-Bit INT typedef int INT; typedef long int INT; // Anpassung auf 32-Bit System // Anpassung auf 16-Bit System Beispiel: Windows-API
18 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung typedef und Strukturen struct Datum short int tag; char monat[10]; short int jahr; }; typedef struct short int tag; char monat[10]; short int jahr; } DATUM; struct Datum heute; DATUM heute; Empfohlene Variante 6.18
19 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Unionen 6.19
20 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Union-Definition Benutzung wie Struktur ABER: alle Komponenten (Alternativen) beginnen bei der selben Adresse speichert jeweils nur eine einzige Komponente (aus Reihe von Alternativen) union Vario int float } variant; intalternative; floatalternative; Programmierer muss verfolgen, welcher Typ momentan in der Union gespeichert ist 6.20
21 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Zugriff auf Alternativen union Variant int intalternative; float floatalternative; }; int x; union Variant vario; Alternative schreiben / auslesen vario.floatalternative = 123.0; x = vario.intalternative; Zeiger auf Union union Variant *pvario = &vario; x = pvario->intalternative; 6.21
22 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Beispiel: Union typedef union long int dw; char byte[4]; } PIXEL; PIXEL pix; char ein_byte; pix.dw = 0xABCD1234; ein_byte = pix.byte[3]; pix.byte[0] = 0xFF; // liefert das // höchstwertigste Byte // setzt das niederwertigste // Byte 6.22
23 Dynamische Speicherverwaltung
24 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Dynamische Speicherverwaltung Problem: Lösung: Speicherbedarf ist während verschiedener Programmausführungen unterschiedlich Variable (insb. Arrays) maximal dimensionieren: char eingabetext[1000]; Nachteile? oder Variable Feldgröße in lokalen Arrays nutzen (ab C99) 6.24
25 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Statische vs. dynamische Variablen statische Variable int x; Verfügbarkeit und Ablage (Speichersegment) je nach Speicherklasse (extern, static, auto) Speichersegmente Code Daten Heap Stack 6.25
26 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Statische vs. dynamische Variablen dynamische Variable hat keinen Bezeichner, keine Vereinbarung Anlegen erfolgt bei Bedarf auf dem Heap Zugriff durch Zeiger auf Bereich im Heap Code Daten Heap Stack stat. Pointer- Variable stat. Pointer- Variable dyn. Variable dyn. Variable Daten Stack Heap 6.26
27 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Dynamische Speicherverwaltung Problem: Lösung bisher: Speicherbedarf ist während verschiedener Programmausführungen unterschiedlich Variablen (insb. Arrays) maximal dimensionieren Nachteil: "verschenkter" Speicher 6.27
28 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Dynamische Speicherverwaltung Problem: Lösung bisher: Lösung neu: Speicherbedarf ist während verschiedener Programmausführungen unterschiedlich Variablen (insb. Arrays) maximal dimensionieren Nachteil: "verschenkter" Speicher Speicherbedarf dynamisch, d.h. zur Programmlaufzeit festlegen stdlib.h bietet Funktionen zum Speicheranforderung und -freigabe: void* malloc(int Groesse); void* calloc(int AnzahlElemente, int ElementGroesse); void* realloc(void *memblock, int Groesse); void free(void *memblock); 6.28
29 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Speicherreservierung mit malloc() #include <stdio.h> #include <stdlib.h> int main() int *pmem; if ((pmem = malloc(sizeof (int)))!= NULL) *pmem = 3; printf("pointer auf int-zahl mit Wert: %d\n", *pmem); free(pmem); } else printf("nicht genuegend Speicher verfuegbar\n"); return 0; } 6.29
30 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Speicherreservierung mit realloc() I #include <stdio.h> #include <stdlib.h> int main() int *pmem; if ((pmem = malloc(sizeof (int)))!= NULL) *pmem = 3; printf("nach malloc():\n"); printf("pointer auf int-zahl mit Wert: %d\n\n", *pmem); } else printf("nicht genuegend Speicher verfuegbar\n"); return -1; } 6.30
31 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Speicherreservierung mit realloc() II... pmem = realloc ((void *) pmem, 2 * (sizeof(int))); if (pmem == NULL) printf ("Nicht genuegend Speicher verfuegbar\n"); return -1; } pmem[1] = 6; printf("nach realloc():\n"); printf("pointer auf int-zahl mit Wert: %d\n", *pmem); printf("2. Element von pointer hat Wert: %d\n\n", pmem[1]); free(pmem); } return 0; 6.31
32 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Speicherreservierung für ein Array #include <stdio.h> #include <stdlib.h> int main() int *parray = NULL; int i, anzahl = 0; printf "Geben Sie bitte die Anzahl der Elemente ein: "); scanf("%d", &anzahl); parray = malloc(sizeof(int) * anzahl); if (parray == NULL) return -1; // Hier: Nutzung des reservierten Speicherbereichs for (i = 0; i < anzahl; i++) parray[i] = i; } free(parray); return 0; 6.32
33 Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Typische Fehler Fehler Folge - kein Speicher mehr frei - Freigabe einer falschen Adresse u.u. Absturz - Freigabe bereits freigegeben Speichers u.u. Absturz - Freigabe eines regulären Feldes / einer regulären Variablen mit free() u.u. Absturz - Freigabe eines nicht-initialisierten Speichers u.u. Absturz - Zugriff auf ungültigen Speicher vor der Speicheranforderung u.u. Absturz - Zugriff auf bereits freigegebenen Speicher u.u. Absturz - Zugriff auf Speicher mit ungültigen Indizes u.u. Absturz - Verlust des Speichers durch Überschreiben des Zeigers "memory leak" - Verlust des Zeigers durch Rücksprung aus einer Funktion "memory leak" - Verlust des Zeigers bei Rückgabe (return-value verworfen) "memory leak" 6.33
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
MehrDynamische 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
MehrPraxis 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
MehrDynamische 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
MehrEinfü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
MehrC- Kurs 07 Höhere Datentypen
C- Kurs 07 Höhere Datentypen Dipl.- Inf. Jörn Hoffmann jhoffmann@informa?k.uni- leipzig.de Universität Leipzig Ins?tut für Informa?k Technische Informa?k Höhere Datentypen Überblick Höhere Datentypen Werden
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
MehrProgrammieren 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
Mehr4.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.
MehrGrundlagen 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
Mehr2. 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)
MehrPraxis 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
MehrC++ - 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.
Mehr7. Organisation von Informationen
Computeranwendung in der Chemie Informatik für Chemiker(innen) 7. Organisation von Informationen Jens Döbler 2003 "Computer in der Chemie", WS 2003-04, Humboldt-Universität VL7 Folie 1 Grundlagen Programme
MehrEinfü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
MehrEinfü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
Mehreinlesen 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
MehrInformatik. 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
MehrProbeklausur 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
MehrVariablen. 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!
MehrTeil 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
MehrArrays (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
MehrAdvanced 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Ü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
MehrSoftware 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
MehrTeil 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
MehrDynamische 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...............................
MehrInformatik. 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
MehrPraxis 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:
MehrInhalt. 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
Mehr2. 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)
MehrVorlesung 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
MehrGrundlagen 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
MehrC- 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)
MehrF 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
MehrArrays,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
MehrDynamischer 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
MehrZeiger (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
MehrC++ 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
MehrStrukturen 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
MehrINE1 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:
MehrEinfü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
MehrInformatik 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
MehrDas folgende Programm demonstriert, wie man Speicheradressen von Variablen ermittelt.
Kapitel 8 Zeiger (Pointer) Bislang war beim Zugriff auf eine Variable nur ihr Inhalt von Interesse. Dabei war es unwichtig, wo (an welcher Speicheradresse) der Inhalt abgelegt wurde. Ein neuer Variablentyp,
MehrPhysische 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[Strukturen] Vereinbarung Verwendung Operationen mit struct Zeiger auf struct Strukturen auf dem Heap Datenstrukturen gebildet mit struct union
Vereinbarung Verwendung Operationen mit struct Zeiger auf struct Strukturen auf dem Heap Datenstrukturen gebildet mit struct union Vereinbarung struct name typ komponente1; typ komponente2;... typ komponenten;
MehrÜ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
Mehr9. 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
MehrSpeicherverwaltung in C
Speicherverwaltung in C Tobias Gutzmann, Le Xuan Khanh, Robert Hartmann 19.04.2005 Typeset by FoilTEX Inhalt Übersicht der wichtigsten Befehle malloc, free, realloc alloca, obstack, brk Speicherverwaltung
MehrProgrammieren 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
MehrPraxis 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Übersicht. Einführung in die Programmierung. Zeichenketten. Zeichenketten. Zeichenketten. Arrays und Zeichenketten. Arrays und Zeichenketten
Übersicht Einführung in die Programmierung Bachelor of Science Prof. Dr. Rethmann Fachbereich Elektrotechnik und Informatik Hochschule Niederrhein Arrays Datentypen, Operatoren und Kontrollstrukturen Funktionen
MehrESP Tutorium. Studienassistent: Ewald Moitzi. Gruppe 1
ESP Tutorium Studienassistent: Ewald Moitzi E-Mail: prog-tutor-ewald@iicm.tugraz.at Gruppe 1 Finde den Fehler 1 char text[5]; strcpy (text, "hallo"); printf ("%s\n",text); Finde den Fehler 1 char text[5];
MehrPropä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
MehrTyp : void* aktuelle Parameter Pointer von beliebigem Typ
2. Funktionen - Prototypvereinbarung typangabe funktionsname(parameterliste); - Funktionsdefinition typ funktionsname(parameterliste){ Anweisung - Funktionstyp -> Typ der Funktionswertes zulaessige Typangaben
MehrU8 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:
MehrVariablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel
4213 Variablen 17.834 float Flugzeug 36812736294 I write code Hund long String Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 3 + 4 1 Variablen sind wie Becher. Sie speichern etwas. // Variablen
MehrC++ 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)
MehrHydroinformatik 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
MehrC-Propädeutikum Höhere Datentypen
C-Propädeutikum Höhere Datentypen Dipl.-Inf. Stefan Freitag freitag@uni-leipzig.de Universitätsrechenzentrum Universitätsbibliothek Universität Leipzig basiert auf den Originalfolien von Jörn Hoffmann
MehrProgrammierkurs C++ Datenstrukturen Seite 1
Programmierkurs C++ Datenstrukturen Seite 1 3 Datenstrukturen 3.1 Arrays Zur Wiederholung als Strukturelement der Programmierung gehört auf der Seite der Datenstrukturen die Liste. Eine Liste kann auf
MehrProgrammiertechnik. 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
MehrPointer. Variablen. Pointer. Ein elementares Beispiel. Pointer in C
Variablen Pointer Variable vs. Pointer Dereferenzieren Address-of Operator & Dereference Operarot * Call by Reference Variable = symbolischer Name für Speicherbereich + Information, wie Speicherbereich
MehrEinführung in C. EDV1-04C-Einführung 1
Einführung in C 1 Helmut Erlenkötter C Programmieren von Anfang an Rowohlt Taschenbuch Verlag ISBN 3-4993 499-60074-9 19,90 DM http://www.erlenkoetter.de Walter Herglotz Das Einsteigerseminar C++ bhv Verlags
MehrU3 3. Übung U3 3. Übung. Systemnahe Programmierung in C Übungen Moritz Strübe Universität Erlangen-Nürnberg Informatik 4, 2009 U3.fm
U3 3. Übung U3 3. Übung Besprechung Aufgabe 1 Pointer Register und Ports U3.1 U3-1 Zeiger U3-1 Zeiger 1 Einordnung Konstante: a 0110 0001 Variable: a Zeiger-Variable (Pointer): a char *p = &a; p U3.2 2
MehrBesprechung Aufgabe 1. Pointer. Register und Ports. SPiC - Ü U3.1
U3 3. Übung U3 3. Übung Besprechung Aufgabe 1 Pointer Register und Ports U3.1 U3-1 Zeiger U3-1 Zeiger 1 Einordnung Konstante: a 0110 0001 Variable: a Zeiger-Variable (Pointer): a char *p = &a; p U3.2 2
MehrKontrollfragen 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;
MehrZusammenfassung des Handzettels für Programmieren in C
Zusammenfassung des Handzettels für Programmieren in C In der handschriftlichen Kopie werden mehr Abkürzungen verwendet. Alles Grün markierte dient zum lernen und wird nicht auf den Handzettel übertragen.
MehrInhalt. 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
MehrAngewandte 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
Mehr7 Laufzeit-Speicherverwaltung
7.1 Grundlagen Bevor wir die Code-Generierung betrachten, müssen wir uns Gedanken über zur Laufzeit des zu generierenden Programms notwendige Aktivitäten zur Zuordnung und Freigabe von Speicherplatz machen.
MehrFelder fester Länge (1)
Felder fester Länge (1) Felder: Aneinanderreihung von mehreren Variablen gleichen Typs Ursprünglich als 1-dimensionale Organisationsform gedacht, aber auch zwei- und höherdimensional (Matrizen u.ä.) Benutzung
MehrSoftware 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
MehrGanzzahlen. Bits, Bytes etc. short, int, long. unsigned
Ganzzahlen Bits, Bytes etc. short, int, long unsigned 152 Speichereinheiten 1 Bit = 1 b = kleinste Einheit, speichert 0 oder 1 1 Byte = 1 B = Zusammenfassung von 8 Bit 1 Kilobyte = 1 KB = 1024 Byte 1 Megabyte
MehrProgrammierung mit C Speicherverwaltung
Programmierung mit C Speicherverwaltung Wo werden Daten im Speicher abgelegt? Programmcode Programmsegment Globale Daten Statische Daten Datensegment Lokale Daten Funktionsaufrufe Stack Frei verfügbar
MehrProgrammiersprachen 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Ü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
MehrGanzzahlen. Speichereinheiten. Speicherung von Zahlen. Ganzzahlen. 2 Milliarden sind nicht viel! Integer-Arithmetik
Speichereinheiten 1 Bit = 1 b = kleinste Einheit, speichert 0 oder 1 1 Byte = 1 B = Zusammenfassung von 8 Bit 1 Kilobyte = 1 KB = 1024 Byte 1 Megabyte = 1 MB = 1024 KB Ganzzahlen 1 Gigabyte = 1 GB = 1024
MehrProgrammierkurs 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
MehrHydroinformatik 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, 08. Januar
MehrKapitel 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:
MehrPointer 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)
MehrINE1 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
MehrStrukturierte Datentypen (struct) 2006 Pearson Education, Inc. All rights reserved.
1 8 Strukturierte Datentypen (struct) 2 8.1 Einführung 8.2 Definition von Strukturen 8.2.1 Selbstbezügliche Strukturen 8.2.2 Definition von Variablen strukturierter Datentypen 8.2.3 Bezeichner für Strukturen
MehrEinfü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
MehrGrundlagen 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,
MehrSchwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen
Schwerpunkte 10. Felder (Arrays) Teil 1 Java-Beispiele: Echo.java Primzahlen.java Monate.java Klassifikation von Typen in Programmiersprachen Array: einziger strukturierter Typ in Java Deklaration, Erzeugung
MehrU4-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
MehrViel Erfolg bei der Bearbeitung der Aufgaben!
Musterlösung Name:... 1 2 3 4 5 Gesamt Note 12 8 10 15 11 56 Bitte tragen Sie auf dem Deckblatt Ihr Namen und Ihre Matrikelnummer ein und auf allen weiteren Seiten nur noch Ihre Matrikelnummer. Lösungen
MehrOrganisatorisches. Ü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
MehrEinfü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
MehrWelche Informatik-Kenntnisse bringen Sie mit?
Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt
MehrDynamischer Speicher
In diesem Abschnitt werden (1) Felder fester Länge und Dynamischer Speicher (2) Felder mit variabler Länge, die sich erst zu Laufzeit des Programms ergibt gegenübergestellt Für (2) benötigt man Funktionen
MehrISO-SiMMlarcl. als erste Programmiersprache. Von Prof. Dr. Joachim Goll Uwe Grüner Prof. Herbert Wiese 2., durchgesehene Auflage
ISO-SiMMlarcl als erste Programmiersprache Von Prof. Dr. Joachim Goll Uwe Grüner Prof. Herbert Wiese 2., durchgesehene Auflage B.G.Teubner Stuttgart Leipzig 1999 Inhaltsverzeichnis 1.1 Algorithmen und
MehrInformatik 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