1 Statische Felder. Hinweise zur Speicherung von Feldern in C++ und C

Größe: px
Ab Seite anzeigen:

Download "1 Statische Felder. Hinweise zur Speicherung von Feldern in C++ und C"

Transkript

1 TU Ilmenau, Institut für Mathematik FG Numerische Mathematik und Informationsverarbeitung PD Dr. rer. nat. habil. W.Neunrf Datei: C FELDER.TEX Hinweise zur Speicherung von Feldern in C++ und C Es soll jech noch einmal in übersichtlicher Form die Deklaration, Definition und Verarbeitung von Feldern unter verschiedenen Aspekten dargestellt werden. Das betrifft nicht nur die Unterschiede zwischen den Sprachdialekten C++ und C, sondern auch die Verwendung von statischen und dynamischen Strukturen. Zunächst noch einmal die Zuordnung von einigen Objekten und Standardbezeichnern zu Header-Files. C++ #include <iostream.h> // fuer Objekte wie // cin, cout,... // getch, printf, scanf, stdin,... // EXIT_FAILURE,... #include <stdio.h> C //#include <iostream.h> //getch, printf, scanf,... #include <stdio.h> // koennen sonst entfallen // muss entfallen // falls mathematische Standardfunktionen auftreten werden automatisch erkannt // fuer Objekte wie // EXIT_FAILURE,... // stdin, stderr, stut,... // stdin,... enthaelt Header-File stdio.h 1 Statische Felder Statische bzw. nichtdynamische Felder (Array) sind hintereinander abgelegte Objekte gleichen Datentyps. Hier muss die Anzahl der Dimensionen und Elemente in einem Feld bei seiner Deklaration (also zur Programmierzeit) angegeben werden. Die Anwendung des Indizierungsoperators auf den Feldnamen ist nur deshalb möglich, weil der Compiler den Feldnamen in Anweisungen als Zeiger auf das erste Element de Feldes ansieht. Die Indizierung wird intern in die Zeigerberechnung umgewandelt. Eindimensionales Feld: feld[i] *(feld+i), i=0,1,2,... Zeigerarithmetik bedeutet, dass der Wert eines Zeigers bei der Addition oder Subtraktion nicht in Einheiten von Bytes, sondern in Einheiten von der Größe der Objekte, auf die der Zeiger zeigt, erhöht oder vermindert wird. Die gezeigten Programme arbeiten mit einem zweidimensionalen Feld. Es sind verschiedene Möglichkeiten der Deklaration der Anzahl der Elemente in den beiden Dimensionen gezeigt. Von diesem maximalen Feld wird in Abhängigkeit von der eingegebenen Zeilen- und Spaltenzahl nur ein Teil genutzt. Würden diese beiden Angaben (oder auch nur eine davon) die vereinbarte obere Grenze übersteigen, kommt es i. Allg. irgendwann während der Programmabarbeitung zu einer Fehlermeldung, in C++ eher als in C. a1stat.exe hat Fehler verursacht und wird geschlossen. Starten Sie das Programm neu. Ein Fehlerprotokoll wird erstellt. 1

2 C++ // a1stat.cpp // Felder: statisch #include <iostream.h> //#define nmax 50 const int nmax=50; // bzw. int nmax=50; uble A[nmax][nmax],sum,max; int n,m,i,j; cout<<"zeilensummennorm einer max. (50,50)-Matrix\n\n"; cout<<"eingabe Zeilenzahl n (0<n<=50): "; cin>>n; while ((n<=0) (n>50)); cout<<"eingabe Spaltenzahl m (0<m<=50): "; cin>>m; while ((m<=0) (m>50)); cout<<"a["<<i<<","<<j<<"] = "; cin>>a[i][j]; cout<<"\nzeilensummennorm = "<<max; C // a1stat.c // Felder: statisch //#include <iostream.h> //#define nmax 50 const int nmax=50; // bzw. int nmax=50; uble A[nmax][nmax],sum,max; int n,m,i,j; char ret; printf("zeilensummennorm einer max. (50,50)-Matrix\n\n"); printf("eingabe Zeilenzahl n (0<n<=50): "); scanf("%i",&n); while ((n<=0) (n>50)); 2

3 printf("eingabe Spaltenzahl m (0<m<=50): "); scanf("%i",&m); while ((m<=0) (m>50)); printf("a[%i,%i] = ",i,j); scanf("%lf",&a[i][j]); printf("\nzeilensummennorm = %lf",max); // Tastaturpuffer leeren fflush(stdin); // stdin in stdio.h bzw. conio.h // anstelle von getch() Eingabe- und Ergebnisfenster zu a1stat.c C:\d\Neunrf\nwptexte\tech phy\05\cpp gpp gcc\a1stat.exe Zeilensummennorm einer max. (50,50)-Matrix Eingabe Zeilenzahl n (0<n<=50): 2 Eingabe Spaltenzahl m (0<m<=50): 5 A[0,0] = 1 A[0,1] = 2 A[0,2] = 3 A[0,3] = -1 A[0,4] = -2 A[1,0] = 4 A[1,1] = 5 A[1,2] = 6 A[1,3] = 0 A[1,4] = -1 Zeilensummennorm =

4 2 Dynamische Felder Dynamische Felder (Array) sind ebenfalls Objekte gleichen Datentyps. Hier muss die Anzahl der Dimensionen und Elemente in einem Feld erst zur Laufzeit des Programms feststehen und kann sich daher den aktuellen Gegegebenheiten anpassen. Die dynamische Reservierung von Feldern ist mit der Verwendung von Zeigern verbunden. Die Anwendung des Indizierungsoperators auf den Feldnamen ist deshalb möglich, weil der Compiler den Feldnamen in Anweisungen als Zeiger auf das erste Element de Feldes ansieht. Die Indizierung und Zeigerberechnung sind ineinander umwandelbar. Die dynamische Speicherallokation mittels den Zeiger reserviert den gewünschten Speicherplatz, der dann üblicherweise auch wieder freizugeben ist, bevor der Zeiger nicht mehr genutzt, ungültig oder umgelenkt wird (Vermeidung von so genannten Speicherlecks). Speicherallokation Speicherfreigabe C++ new delete C++/C malloc() free() In der Zeigerprogrammierung sind u. a. wichtig die Deklaration von Zeigern mit dem bestimmten Datentyp, generische Zeiger (void) ohne Typbezogenheit, explizite Typumwandlung bei Zeigern, Zeiger und Felder, Zeigerarithmetik und Zeiger auf Zeiger. Die Typumwandlung bei Zeigern ist in den Projekten gauss4c,..., gauss4cpp2 zum Gauß-Algorithmus und speziell in der Funktion lamatrixneu_ schon mehrfach verwendet worden. Am Beispiel eines zweidimensionalen Felds (rechteckige Matrix) sollen einige Aspekte demonstriert werden. Halbdynamische Felder Zunächst soll speicherplatzsparend dadurch gearbeitet werden, dass bei fester maximaler Matrixzeile mit spmax Elementen (=Spalten) die Anzahl der Zeilen in Abhängigkeit von der aktuell eingegebenen Größe n festgelegt wird. Für die Matrixelemente braucht man dann n*spmax Speicherplatz von gegebenem Elementtyp (hier uble). Dazu kommt noch Speicherplatz für etwas Adressverwaltung. C++ Das ist die kurze und elegante Version unter Verwendung eines Zeigervektors (Vektor von Zeigern). Damit liegen die Matrixzeilen im Speicher genau hintereinander und es ist A[i] = *(A+i). Die Matrixelemente können mittels A[i][j] oder *(*(A+i)+j) aufgerufen werden. // a1hdyn1.cpp // Felder: halbdynamisch, Zeigervektor, new-delete #include <iostream.h> 4

5 //#define spmax 50 const int spmax=50; typedef uble vektor[spmax]; // maximale Spaltenzahl // Typ des Zeilenvektors uble max,sum; cout<<"zeilensummennorm einer (n,m)-matrix, m<=50\n\n"; cout<<"eingabe Zeilenzahl n (0<n): "; cin>>n; while (n<=0); cout<<"eingabe Spaltenzahl m (0<m<=50): "; cin>>m; while ((m<=0) (m>50));, damit A[i] = *(A+i) vektor *A = new vektor[n]; // n beliebig cout<<"a["<<i<<","<<j<<"]= "; cin>>a[i][j]; cout<<"\nzeilensummennorm = "<<max; delete []A; C Verwendung des Zeigervektors. Ein Feld von Zeigern (Zeigerfeld) auf den Datentyp T wird als T *ptr[anzahl] deklariert. Dies ist nicht mit einem Zeiger auf ein Feld vom Typ T gemäß T (*ptr)[anzahl] zu verwechseln. Da die Deklaration des Zeigerfelds mit einer festen Feldgrenze erfolgen muss, gibt man rt eine maximale obere Schranke an. Die eingegebene Anzahl der Zeilen sollte dann nicht größer als diese Schranke sein. Die Dynamik der Allokation von Speicherplatz für die Matrixzeilen besteht dann darin, dass man nur Platz für die gewünschten Zeilen allokiert. Ist die eingegebene Zeilenzahl größer als die Schranke, wird es i. Allg. während der Programmabarbeitung zur Fehlermeldung und damit zum Abbruch kommen. Programmfehler a1stat.exe hat Fehler verursacht und wird geschlossen. Starten Sie das Programm neu. Ein Fehlerprotokoll wird erstellt. Damit ist die dynamische Speicherverwaltung bezüglich der Zeilen nicht vollständig machbar. 5

6 // a1hdyn1.c // Felder: halbdynamisch mit Kontrolle, Zeigervektor, malloc-free //#define spmax 50 //#define zemax 50 const int spmax=50; const int zemax=50; typedef uble vektor[spmax]; uble *A[zemax]; // maximale Spaltenzahl // maximale Zeilenzahl // Typ des Zeilenvektors // Feld (Vektor) von Zeigern uble max,sum; char ret; printf("zeilensummennorm einer (n,m)-matrix, n,m<=50\n\n"); printf("eingabe Zeilenzahl n (0<n<=50): "); scanf("%i",&n); while ((n<=0) (n>50)); printf("eingabe Spaltenzahl m (0<m<=50): "); scanf("%i",&m); while (m<=0 m>50); //if ((*(A+i) = (uble*) malloc(sizeof(vektor)))==null) if ((A[i] = (uble*) malloc(sizeof(vektor)))==null) // analog printf("a[%i,%i] = ",i,j); scanf("%lf",&a[i][j]); // sum=sum+fabs(*(*(a+i)+j)); printf("\nzeilensummennorm = %lf",max); fflush(stdin); for (i=0;i<n;i++) free(*(a+i)); Nun soll ein Zeiger auf Zeiger genutzt werden. Dabei erkennt man, was notwendig wäre, um auch in der Spaltendimension dynamisch zu werden. Man braucht die Reservierung der Matrixzeilen nur mit der eingelesenen Länge m anstelle von spmax zu machen. 6

7 // a1hdyn2.c // Felder: halbdynamisch mit Kontrolle, Zeiger auf Zeiger, malloc-free //#define spmax 50 const int spmax=50; typedef uble vektor[spmax]; uble **A; // maximale Spaltenzahl // Typ des Zeilenvektors uble max,sum; char ret; printf("zeilensummennorm einer (n,m)-matrix, m<=50\n\n"); printf("eingabe Zeilenzahl n (0<n): "); scanf("%i",&n); while (n<=0); printf("eingabe Spaltenzahl m (0<m<=50): "); scanf("%i",&m); while ((m<=0) (m>50)); if ((A = (uble**) malloc(n*sizeof(uble*)))==null) // if ((*(A+i) = (uble*) malloc(spmax*sizeof(uble)))==null) // analog if ((*(A+i) = (uble*) malloc(sizeof(vektor)))==null) printf("a[%i,%i] = ",i,j); scanf("%lf",&a[i][j]); printf("\nzeilensummennorm = %lf",max); fflush(stdin); free(*(a+i)); free(a); 7

8 Dynamische Felder Verwendung des Konzepts Zeiger auf Zeiger für beide Sprachdialekte. C++ 4 Programmversionen // a1dyn1.cpp // Felder: dynamisch, Zeiger auf Zeiger, new-delete #include <iostream.h> typedef uble **matrix; // Typ der Matrix matrix A; // uble **A; // einfache Schreibweise uble max,sum; cout<<"zeilensummennorm einer (n,m)-matrix\n\n"; cout<<"eingabe Zeilenzahl n (0<n): "; cin>>n; while (n<=0); cout<<"eingabe Spaltenzahl m (0<m): "; cin>>m; while (m<=0); // mit Umtypisierung // einfache Variante a1dyn2.cpp (char*)a = new char[n*sizeof(uble*)]; // A = new uble*[n]; *(A+i) = new uble[m]; cout<<"a["<<i<<","<<j<<"]= "; cin>>a[i][j]; cout<<"\nzeilensummennorm = "<<max; delete [](*(A+i)); delete [](char*)a; // einfache Variante a1dyn2.cpp // delete []A; /* */ 8

9 // a1dyn3.cpp // Felder: dynamisch mit Kontrolle, Zeiger auf Zeiger, new-delete #include <iostream.h> typedef uble **matrix; // Typ der Matrix matrix A; // uble **A; // einfache Schreibweise uble max,sum; cout<<"zeilensummennorm einer (n,m)-matrix\n\n"; cout<<"eingabe Zeilenzahl n (0<n): "; cin>>n; while (n<=0); cout<<"eingabe Spaltenzahl m (0<m): "; cin>>m; while (m<=0); // Fehlermeldung? // ev. "Nicht genuegend virtueller Speicher, // Auslagerungsdatei vergroessern,..." if ((A = new uble*[n])==null) if ((*(A+i) = new uble[m])==null) cout<<"a["<<i<<","<<j<<"]= "; cin>>a[i][j]; cout<<"\nzeilensummennorm = "<<max; delete [](*(A+i)); delete [](char*)a; /* */ 9

10 // a1dyn4.cpp // Felder: dynamisch mit Kontrolle, Zeiger auf Zeiger, malloc-free //#include <iostream.h> typedef uble **matrix; // Typ der Matrix matrix A; // uble **A; // einfache Schreibweise uble max,sum; char ret; printf("zeilensummennorm einer (n,m)-matrix\n\n"); printf("eingabe Zeilenzahl n (0<n): "); scanf("%i",&n); while (n<=0); printf("eingabe Spaltenzahl m (0<m): "); scanf("%i",&m); while (m<=0); if (((void*)a = malloc(n*sizeof(uble*)))==null) if (((void*)(*(a+i)) = malloc(m*sizeof(uble)))==null) printf("a[%i,%i] = ",i,j); scanf("%lf",&a[i][j]); printf("\nzeilensummennorm = %lf",max); fflush(stdin); free(*(a+i)); free(a); Die Analogie zur Version a1dyn4.cpp ohne den generischen Zeiger void* gibt es auch in C. 10

11 C // a1dyn4.c // Felder: dynamisch mit Kontrolle, Zeiger auf Zeiger, malloc-free typedef uble **matrix; // Typ der Matrix matrix A; // uble **A; // einfache Schreibweise uble max,sum; char ret; printf("zeilensummennorm einer (n,m)-matrix\n\n"); printf("eingabe Zeilenzahl n (0<n): "); scanf("%i",&n); while (n<=0); printf("eingabe Spaltenzahl m (0<m): "); scanf("%i",&m); while (m<=0); // Fehlermeldung? // ev. "Nicht genuegend virtueller Speicher, // Auslagerungsdatei vergroessern,..." if ((A = malloc(n*sizeof(uble*)))==null) if ((*(A+i) = malloc(m*sizeof(uble)))==null) printf("a[%i,%i] = ",i,j); scanf("%lf",&a[i][j]); printf("\nzeilensummennorm = %lf",max); fflush(stdin); free(*(a+i)); free(a); 11

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 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

GI Vektoren

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

Mehr

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

Das folgende Programm demonstriert, wie man Speicheradressen von Variablen ermittelt.

Das 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,

Mehr

Dynamischer Speicher

Dynamischer 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

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 5-1 Übung Schreiben Sie ein Programm, das die Zahl π durch π = 4 4 4 4 4 4 + + +... 3 5 7 9 11

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

Inhalt. Peter Sobe 63. Felder in C

Inhalt. Peter Sobe 63. Felder in C Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Streuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Pointern

Mehr

Felder fester Länge (1)

Felder 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

Mehr

Felder (1) Allgemeines

Felder (1) Allgemeines Felder (1) Allgemeines Gleichartige Daten, wie Tabelle von Zahlen, Datumswerten, Namen etc. Felder (engl. Array) stellen einen Verbundtyp dar, in dem mehrere Daten desselben Typs gespeichert werden Oft

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

Felder in C. Felder stellen eine Reihung von Elementen gleichen Typs dar. Man spricht auch von Vektoren oder Arrays.

Felder in C. Felder stellen eine Reihung von Elementen gleichen Typs dar. Man spricht auch von Vektoren oder Arrays. Felder in C Felder stellen eine Reihung von Elementen gleichen Typs dar. Man spricht auch von Vektoren oder Arrays. Durch die Reihung (hintereinander speichern) kann ein Element über seine Nummer (Index)

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

Übungspaket 23 Mehrdimensionale Arrays

Übungspaket 23 Mehrdimensionale Arrays Übungspaket 23 Mehrdimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung mehrdimensionaler Arrays Kapitel: 49 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:

Mehr

C- Kurs 07 Höhere Datentypen

C- 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

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

C/C++-Programmierung

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

Mehr

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

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 11 Dynamische Feldvereinbarung... 11-2 11.1 Dynamische Vereinbarung von Vektoren... 11-3 11.2 Dynamische Vereinbarung von Matrizen... 11-5 11.3 Die Kommandozeile... 11-8 Propädeutikum 11-1/8 11

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

Programmierkurs C++ Datenstrukturen Seite 1

Programmierkurs 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

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

Übungspaket 23 Mehrdimensionale Arrays

Übungspaket 23 Mehrdimensionale Arrays Übungspaket 23 Mehrdimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung mehrdimensionaler Arrays Kapitel: 49 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:

Mehr

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

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

Mehr

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

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

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

Einführung in die Programmierung Wintersemester 2014/15

Einführung in die Programmierung Wintersemester 2014/15 Einführung in die Programmierung Wintersemester 2014/15 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Zeiger Inhalt Zeiger Zeigerarithmetik Zeiger für

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

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch darstellung Arbeiten mit darstellung werden im Computer durch (kleine) Zahlen dargestellt in C können im Datentyp char gespeichert werden, dieser umfasst ein Byte und gilt als Ganzzahltyp darstellung Arbeiten

Mehr

Zeiger: Der Adressoperator &

Zeiger: Der Adressoperator & Zeiger: Der Adressoperator & Variablen werden im Computer im Speicher abgelegt. Nach der Deklaration int a,b,c; double x,y,z; Sieht die Speicherbelegung etwa wie folgt aus: a b c x y z Jede Variable hat

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

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

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

file:///h:/dokumente/_fh/ ws /etinfoii/vorlesung/infoi...

file:///h:/dokumente/_fh/ ws /etinfoii/vorlesung/infoi... 3.2 Doppelzeiger Wie im letzten Kapitel erläutert, sind Doppelzeiger Zeiger, die auf einen weiteren Zeiger verweisen. Doppelzeiger werden unter anderem dann benötigt, wenn eine Matrix, die sowohl in der

Mehr

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

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

Mehr

Outline. 1 Einleitung. 2 Einführung in C. 3 Fortgeschrittenes in C. 4 Einführung in Emacs Lisp. 5 Einführung in Prolog. 6 Formale Semantik

Outline. 1 Einleitung. 2 Einführung in C. 3 Fortgeschrittenes in C. 4 Einführung in Emacs Lisp. 5 Einführung in Prolog. 6 Formale Semantik Outline 1 Einleitung 2 Einführung in C 3 Fortgeschrittenes in C 4 Einführung in Emacs Lisp 5 Einführung in Prolog 6 Formale Semantik Imperative Programmierung Imperatives Paradigma Ziel: Ablaufbeschreibung

Mehr

Zeiger. Zeiger ist eine Variable deren Wert eine Adresse enthält. Zeiger werden im Programm definiert. int *pmyinteger; Type *PointerName ;

Zeiger. Zeiger ist eine Variable deren Wert eine Adresse enthält. Zeiger werden im Programm definiert. int *pmyinteger; Type *PointerName ; Zeiger & Variable ist ein Speicherort im C++ Programm und hat eine Adresse. Variable - Zugriff auf Variable und/oder Adresse * & Operator liefert die Adresse einer Variablen im Speicher Adresse int myvariable

Mehr

Strukturen & Math. Strukturen und Vektoren. Allokieren eines Vektors. Zugriff auf Strukturen. Freigeben eines Vektors

Strukturen & Math. Strukturen und Vektoren. Allokieren eines Vektors. Zugriff auf Strukturen. Freigeben eines Vektors Strukturen & Math Strukturen für mathematische Objekte: allgemeine Vektoren Matrizen Strukturen und Vektoren 1 #ifndef _STRUCT_VECTOR_ 2 #define _STRUCT_VECTOR_ 3 4 #include 5 #include

Mehr

Strukturen & Math. Strukturen für mathematische Objekte: allgemeine Vektoren Matrizen

Strukturen & Math. Strukturen für mathematische Objekte: allgemeine Vektoren Matrizen Strukturen & Math Strukturen für mathematische Objekte: allgemeine Vektoren Matrizen 175 Strukturen und Vektoren 1 #ifndef _STRUCT_VECTOR_ 2 #define _STRUCT_VECTOR_ 3 4 #include 5 #include

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

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2010/11 arithmetik für dynamischen Speicher Anwendungen Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU

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

Datei: svn/ckurs/trunk/c_texte/c_arrptr.txt, Datum: 30. Juni Felder und Zeiger

Datei: svn/ckurs/trunk/c_texte/c_arrptr.txt, Datum: 30. Juni Felder und Zeiger Datei: svn/ckurs/trunk/c_texte/c_arrptr.txt, Datum: 30. Juni 2015 Felder und Zeiger 1. Felder 1. Felder werden deklariert und definiert durch die Angabe der Elementanzahl nach dem Feldnamen mit dem Feldoperator

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

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

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 4 Einführung in die Programmiersprache Java (Teil III)... 4-2 4.5 Referenzdatentypen - Felder... 4-2 4.5.1 Eindimensionale Felder - Vektoren... 4-3 4.5.2 Beispiel Sortieren eines Vektors... 4-4

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

Ü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

Naive Fehlerkontrolle

Naive Fehlerkontrolle Motivation Fakt ist: alle Programmierer machen Fehler Code läuft beim ersten Mal nie richtig Naive Fehlerkontrolle Großteil der Entwicklungszeit geht in Fehlersuche Profis unterscheiden sich von Anfängern

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

Standardbibliotheken. Datentyp bool. Eingaben 2/2. Eingaben 1/2. In C gibt es keinen logischen Datentyp

Standardbibliotheken. Datentyp bool. Eingaben 2/2. Eingaben 1/2. In C gibt es keinen logischen Datentyp Datentyp bool Standardbibliotheken Ein- und Ausgabe Vektoren Container In C gibt es keinen logischen Datentyp Abhilfe schafft Interpretation 0 == false 1 == true Das könnte so aussehen: #define false 0

Mehr

+ C - Array (Vektoren, Felder)

+ C - Array (Vektoren, Felder) + C - Array (Vektoren, Felder) Eindimensionale Arrays Beim Programmieren steht man oft vor dem Problem, ähnliche, zusammengehörige Daten (vom gleichen Datentyp) zu speichern. Wenn man zum Beispiel ein

Mehr

Entwickeln Sie ein C/C++-Programm für die Verwaltung einer Artikeldatei gemäß folgender Vorgaben!

Entwickeln Sie ein C/C++-Programm für die Verwaltung einer Artikeldatei gemäß folgender Vorgaben! Projekt: Artikelverwaltung Seite 1 von 5 Entwickeln Sie ein C/C++-Programm für die Verwaltung einer Artikeldatei gemäß folgender Vorgaben! Legen Sie global einen benutzerdefinierten Datentyp artikel an:

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

Auswahlen (Selektionen)

Auswahlen (Selektionen) 1 Anhang 10.3 Ein/Ausgaben Eingabe mit Prompt (Beispiel) cout ; // Prompt ohne endl cin

Mehr

Physische Datenstrukturen

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

Mehr

Nachname:... Vorname:... MatrNr.:... Klausur PR2

Nachname:... Vorname:... MatrNr.:... Klausur PR2 Nachname:... Vorname:... MatrNr.:... Klausur PR2 HAW-Hamburg, Fakultät Technik und Informatik, Department Informations- und Elektrotechnik Dr. Robert Heß, 6.7.2007 Bearbeitungsdauer: 90 min Hilfsmittel:

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

C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14

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

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

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

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf  Seite 1 von 29 Kapitel 2 Einführung in C++ Seite 1 von 29 C++ Zeichensatz - Buchstaben: a bis z und A bis Z. - Ziffern: 0 bis 9 - Sonderzeichen: ; :,. # + - * / % _ \! < > & ^ ~ ( ) { } [ ]? Seite 2 von 29 Höhere Elemente

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

Programmiersprachen Einführung in C

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

Mehr

Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion. Programmieren in C

Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion. Programmieren in C Übersicht Funktionen Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion Sinn von Funktionen Wiederverwendung häufig verwendeter nicht banaler Programmteile Wiederverwendung

Mehr

Lösung zur Übungs-Klausur Informatik für allg. Maschinenbau

Lösung zur Übungs-Klausur Informatik für allg. Maschinenbau Aufgabe 1: a) Wodurch werden imperative Programmiersprachen im Vergleich zu deklarativen Sprachen charakterisiert? Imperative Programmiersprachen erfordern, dass die Programme als Folge einzelner Anweisungen

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

Wertebereich und Genauigkeit der Zahlendarstellung

Wertebereich und Genauigkeit der Zahlendarstellung Wertebereich und Genauigkeit der Zahlendarstellung Sowohl F als auch C kennen bei ganzen und Floating Point-Zahlen Datentypen verschiedener Genauigkeit. Bei ganzen Zahlen, die stets exakt dargestellt werden

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-6 5.1.3 Kopieren eindimensionaler Felder... 5-7

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

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

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

Mehr

C++ Teil 7. Sven Groß. 30. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 13

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)

Mehr

int i=1; //Integerzahl i anlegen und mit 1 initialisieren float wert; //Floatzahl deklarieren scanf( %f,&wert); //Wert über Tastatur eingeben

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

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

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern

Mehr

Projekt 3 Variablen und Operatoren

Projekt 3 Variablen und Operatoren Projekt 3 Variablen und Operatoren Praktisch jedes Programm verarbeitet Daten. Um mit Daten programmieren zu können, muss es Möglichkeiten geben, die Daten in einem Programm zu verwalten und zu manipulieren.

Mehr

Grundlagen der Objektorientierten Programmierung - Statische Arrays

Grundlagen der Objektorientierten Programmierung - Statische Arrays Statische Arrays Ein Array ist ein Behälter für Datenelemente desselben Typs. Arrays können beliebig viele Dimensionen haben. Die Standardform ist das eindimensionale Array, das man sich in Zeilenform

Mehr

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang.   WS 07/08 Reihungen Prof. Dr. Christian Böhm In Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende

Mehr

10 Die Programmiersprache C99: Zusammenfassung

10 Die Programmiersprache C99: Zusammenfassung 10 Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 25. September 2014, 18:40 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html

Mehr

C-Propädeutikum Höhere Datentypen

C-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

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

1. Aufgabe (6 Punkte)

1. Aufgabe (6 Punkte) Nachname:... Vorname:... MatrNr.:... Klausur PR2 HAW-Hamburg, Fakultät Technik und Informatik, Department Informations- und Elektrotechnik Dr. Robert Heß, 1.2.2008 Bearbeitungsdauer: 90 min Hilfsmittel:

Mehr

ModProg 15-16, Vorl. 8

ModProg 15-16, Vorl. 8 ModProg 15-16, Vorl. 8 Richard Grzibovski Dec. 9, 2015 1 / 26 Übersicht Übersicht 1 Zeiger: Zusammenfassung 2 void-zeiger 3 Der Operator / die Funktion sizeof 4 Dynamische Felder Speicherreservierung mit

Mehr

Erste Schritte der Programmierung in C

Erste Schritte der Programmierung in C Erste Schritte der Programmierung in C C versus C++ Anatomie von C-Programmen für AVR- Mikrocontroller Unterschiede zwischen C++ und C 1 Grundlegende Unterschiede File-Extensions (Header und Quellcode)

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

Reihungen. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang

Reihungen. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang Reihungen Martin Wirsing in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang http://www.pst.informatik.uni-muenchen.de/lehre/ws0506/infoeinf/ WS 05/06 2 Ziele Die Datenstruktur der Reihungen

Mehr

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

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

Mehr

ÜBUNGS-BLOCK 7 LÖSUNGEN

ÜBUNGS-BLOCK 7 LÖSUNGEN ÜBUNGS-BLOCK 7 LÖSUNGEN Aufgabe 1: Gegeben ist folgender Code: Auto[] array = new Auto[3]; // Alle Autos im Array tunen: for (int i = 1; i

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

Grundzüge der objektorientierten Programmierung

Grundzüge der objektorientierten Programmierung BERGISCHE UNIVERSITÄT GESAMTHOCHSCHULE WUPPERTAL GAUSS-STRASSE 20 42097 WUPPERTAL (Korrespondenzanschrift) 42119 WUPPERTAL (Lieferanschrift) TELEX 8 592 262 bughw TELEFAX (0202) 439-2901 TELEFON (0202)

Mehr

U3 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. 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

Mehr