Teil 5: Zeiger, Felder, Zeichenketten Gliederung
|
|
- Volker Simen
- vor 6 Jahren
- Abrufe
Transkript
1 Teil 5: Zeiger, Felder, Zeichenketten Gliederung Zeiger und Adressen Felder (Arrays) Zeichenketten (Strings) Zeigerarithmetik Mehrdimensionale Felder
2 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Zeiger und Adressen 5.2
3 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Funktion mit mehreren Rückgabewerten? Problem: Eine Funktion swap(...) soll die Inhalte 2er Variablen vertauschen. Wie kann dieses Problem gelöst werden? int x = 1, y = 2; // tausche x und y
4 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Funktion mit mehreren Rückgabewerten? Problem: Eine Funktion swap(...) soll die Inhalte 2er Variablen vertauschen. Wie kann dieses Problem gelöst werden? int x = 1, y = 2; // tausche x und y... int temp; temp = x; x = y; y = temp; 5.4
5 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Funktion mit mehreren Rückgabewerten? Problem: Eine Funktion swap(...) soll die Inhalte 2er Variablen vertauschen. Wie kann dieses Problem gelöst werden? void swap( ) { } int main() { int x = 1, y = 2; } // tausche x und y swap( ); return 0; 5.5
6 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Variablenmodell Speicheradresse Arbeitsspeicher Bezeichner Kodierung Wert Datentyp Dekodierung 5.6
7 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Typ-Klassifikation 5.7
8 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Was ist ein Zeiger? Ein Zeiger (Pointer) ist eine Variable, welche die Adresse einer im Speicher befindlichen Variablen oder Funktion aufnehmen kann. Damit verweist eine Zeigervariable mit ihrem Variablenwert auf die jeweilige Adresse. 5.8
9 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Deklaration / Definition eins Zeigers Zeiger sind typgebunden int *pi; // Zeiger auf int double *pd; // Zeiger auf double 5.10
10 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Referenzieren und Dereferenzieren Referenzieren: Adressoperator & liefert Adresse eines Objekts Dereferenzieren: Dereferenzierungsoperator * liefert Inhalt an der Adresse Referenzieren mit & Objekt Adresse des Objekts Dereferenzieren mit * Referenzieren pointer = &x int-variable x pointer enthält die Adresse von x Dereferenzieren *pointer = 5; heißt: das Objekt, auf das der Pointer pointer zeigt, erhält den Wert
11 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Wertzuweisung an einen Zeiger I
12 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Wertzuweisung an einen Zeiger II... pointer1 = &alpha pointer1 = pointer2... Objekt alpha Objekt alpha pointer1 pointer2? Vor der Zuweisung pointer2 = pointer1 enthält pointer2 irgendeine Adresse pointer1 pointer2 Nach der Zuweisung pointer2 = pointer1 zeigen beide Pointer auf dasselbe Objekt alpha 5.13
13 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Beispiel 1: Zeigeroperationen Speicherzelle 1024 Nummer 1024 x y p int x, y, *p; x = -7;??? p = &x; y = *p;
14 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Beispiel 2: Zeigeroperationen Was ist an den folgenden Anweisungen a bis e falsch? float x, y, *p; a) *p = ; b) p = & ; c) *x = 5.4; d) x = &y; e) p = *y; 5.18
15 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Funktion mit mehreren Rückgabewerten? Problem: Eine Funktion swap(...) soll die Inhalte 2er Variablen vertauschen. Wie kann dieses Problem gelöst werden? void swap( ) { } int main() { int x = 1, y = 2; } // tausche x und y swap( ); return 0; 5.19
16 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Warum Zeiger? call by reference mehrere Rückgabewerte bei Funktionsaufrufen Beschleunigung von Funktionsaufrufen (warum?) erlauben direkte Speicher-Manipulationen dynamisch Speicher anfordern / freigeben Umgang mit Arrays und Strings Nachteil: hohe Gefahr von Fehlern 5.20
17 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Felder 5.22
18 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Felder (Arrays) - Verbundtypen - variable Anzahl von Elementen eines Datentyps - sequenzielle Ablage im Speicher - ein- oder mehrdimensional - Anwendung: Vektoren, Matrizen, Tabellen, Zeichenketten (Strings) 5.23
19 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Definition und Zugriff datentyp bezeichner[anzahl]; Anzahl der Elemente muss eine Konstante sein: int feld[10]; Variable Feldgrenzen sind nicht möglich: int x = 7;... int feld[x]; Zugriff über Index, gültiger Bereich 0 bis anzahl-1: feld[0] = 123;... feld[9] = 456; feld[10] = 21; 5.24
20 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Speicherabbild int alpha[5]; alpha[0] int alpha[1] int alpha[2] int alpha[3] int alpha[4] int for (int i = 0; i < 5; i++) alpha[i] = i * i; alpha[0] int alpha[1] int alpha[2] int alpha[3] int alpha[4] int
21 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Arbeiten mit Feldern Beispiel: Elemente des Arrays alpha ausgeben: for (int i = 0; i < 5; i++) { printf ("\n%d", alpha[i]); } Beispiel: Mittelwert aller Werte des Arrays berechnen float summe = 0.f; for (int i = 0; i < 5; i++) { summe = summe + alpha[i]; } printf ("\nder Mittwelwert ist: %f", summe / (i + 1)); 5.26
22 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Initialisierung von Feldern Initialisierung: int felda[4] = {0}; // Auto-Initialisierung // setzt alle Elemente auf 0 int feldb[4] = {0, 1, 3, 5}; // Voll-Initialisierung int feldc[] = {0, 1, 3, 5}; // Compiler zählt selbst Vergleiche zwischen Arrays if (feld1 == feld2) sind nicht möglich! Zuweisungen der Form feld2 = feld1; sind ebenfalls nicht möglich! Lösung: 1) elementweise vergleichen/kopieren 2) gesamten Speicherbereich kopieren 5.27
23 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Felder als Parameter void Ausgabe( ); int main() { int feld[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; } Ausgabe( ); return 0; void Ausgabe( ) { for (int i = 0; i < laenge; i++) printf("%d\n", feld[i]); } 5.28
24 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder call by reference void erhoeheumeins(int[], int); main() { int einfeld[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; } Ausgabe(einFeld, 10); erhoeheumeins(einfeld, 10); Ausgabe(einFeld, 10); void erhoeheumeins(int feld[], int len) { for (int i = 0; i < len; i++) feld[i] = feld[i] + 1; } 5.30
25 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Zeichenketten 5.31
26 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Definition String Array vom Typ char[] Null-Terminierung durch '\0'-Byte Initialisierung: char wochentag[] = "Samstag"; ist gleichbedeutend mit char wochentag[] = {'S','a','m','s','t','a','g','\0'}; oder auch char wochentag[8]; wochentag[0] = 'S'; wochentag[1] = 'a';... wochentag[7] = '\0'; 5.32
27 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Strings String-Konstanten Zeiger konstant, String variabel: char message[] = "now is the time"; // per Array Zeiger variabel, String konstant: char *pmessage = "now is the time"; // per Zeiger 5.33
28 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Was ist an diesem Programm falsch? #include <stdio.h> int main(void) { char txt[21]; char *pstr; printf("enter your first name: \n"); scanf("%s", pstr); txt = "Hello, "; printf("%s %s", txt, pstr); } return 0; 5.34
29 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Bibliotheksfunktionen in <string.h> Länge eines Strings ermitteln a = strlen(s1); // ergibt Länge, ohne '\0'-Byte String kopieren strcpy(ziel_string, quell_string); String an einen anderen String anhängen strcat(ziel_string, quell_string); Strings vergleichen int a; a = strcmp(s1, s2) -1 wenn s1 < s 0 wenn s1 == s2 1 wenn s1 > s2 5.35
30 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Zeigerarithmetik 5.36
31 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Dualität von Zeigern und Feldern I Bezeichner eines Arrays referenziert (wie ein Zeiger) eine Adresse: Ein Zugriff wird vom Compiler als a[i] *(a + i) behandelt. Elemente eines Arrays können über Zeiger referenziert werden: Beispiel int a[10]; int *pa; pa = a; 5.37
32 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Dualität von Zeigern und Feldern II als Funktionsparameter werden Arrays und Zeiger äquivalent behandelt: void strcopy(char destination[], const char source[]); void strcopy(char *destination, const char *source); sei a ein beliebiges Feld a[i] &a[i] ist identisch zu ist identisch zu sei pa eine beliebige Zeigervariable pa[i] ist identisch zu &pa[i] ist identisch zu 5.38
33 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Zeigerarithmetik Fall 1: Zeiger +/- int-wert -> Zeiger long feld[5] long *zeiger; zeiger = feld; zeiger++; zeiger += 3; *zeiger = 123; 5.39
34 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Zeigerarithmetik Fall 1: Zeiger +/- int-wert -> Zeiger long feld[5] long *zeiger; zeiger = feld; // Zeiger verweist auf Feld-Anfang zeiger++; // Zeiger verweist nun auf 2. Element zeiger += 3; // Zeiger verweist nun auf 5. Element *zeiger = 123; // ist nun identisch mit feld[4] = 123; 5.40
35 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Zeigerarithmetik Fall 1: Zeiger +/- int-wert -> Zeiger long feld[5] long *zeiger; zeiger = feld; // Zeiger verweist auf Feld-Anfang zeiger++; // Zeiger verweist nun auf 2. Element zeiger += 3; // Zeiger verweist nun auf 5. Element *zeiger = 123; // ist nun identisch mit feld[4] = 123; Fall 2: Zeiger +/- Zeiger -> int-wert int strlen(char zeichenkette[]) { char *anf, *end;... } 5.41
36 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Mehrdimensionale Felder 5.44
37 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Mehrdimensionale Felder int alpha[3][4]; a lp h a [ 0 ] a lp h a [ 1 ] a lp h a [ 2 ] Spaltenindex Zeilenindex [0][0] [0][1] [0][2] [0][3] [1][0] [1][1] [1][2] [1][3] [2][0] [2][1] [2][2] [2][3] Allgemein kann ein n-dimensionales Array als ein eindimensionales Array, dessen Komponenten (n-1)-dimensionale Arrays sind, interpretiert werden. 5.45
38 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Initialisierung int alpha[3][4] = { }; {1, 3, 5, 7}, {2, 4, 6, 8}, {3, 5, 7, 9},
39 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Fallbeispiel: Matrizenmultiplikation Problemstellung: Programm zur Berechnung des Produkts zweier Matrizen Voraussetzung: A Spaltenzahl = B Zeilenzahl 5.47
40 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder #define MAX 10 int main() { int za, sa, zb, sb; float A[MAX][MAX], B[MAX][MAX], C[MAX][MAX]; printf("\nmatrix a einlesen: \n"); printf("zahl der Zeilen : "); scanf("%d", &za); printf("zahl der Spalten: "); scanf("%d", &sa); mat_lesen(a, za, sa); printf("\nmatrix b einlesen: \n"); printf("zahl der Zeilen : "); scanf("%d", &zb); printf("zahl der Spalten: "); scanf("%d", &sb); mat_lesen(b, zb, sb); mat_mult(a, B,... ); printf("\ndie Ergebnismatrix c lautet: \n\n"); mat_drucken(c, za, sb); } return 0; 5.48
41 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Felder (mehrdimensional) als Parameter void AusgabeMatrix( ); int main() { int i; int matrix[3][4] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } }; } AusgabeMatrix( ); return 0; void AusgabeMatrix( ) { int i, j; for ( i = 0; i < zeilen; i++ ) for ( j = 0; j < 4; j++) printf("%d ", matrix[i][j]; } 5.49
42 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Arrays von Zeigern, Zeiger auf Zeiger Bsp: Ablage von Arrays/Strings unterschiedlicher Länge p a1[0]... a1[5] a1 p[0] p[1] p[2] a2 a3 char a1[6], a2[3], a3[5]; 5.52
43 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Arrays von Zeigern, Zeiger auf Zeiger Bsp: Ablage von Arrays/Strings unterschiedlicher Länge p a1[0]... a1[5] a1 p[0] p[1] p[2] a2 a3 char a1[6], a2[3], a3[5]; char *p[3]; 5.53
44 Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik Mehrdimensionale Felder Arrays von Zeigern, Zeiger auf Zeiger Bsp: Ablage von Arrays/Strings unterschiedlicher Länge p a1[0]... a1[5] a1 p[0] p[1] p[2] a2 a3 X char a1[6], a2[3], a3[5]; char *p[3]; p[0] = a1; p[1] = a2; p[2] = a3; 5.54
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
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)
MehrFelder (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
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
MehrZeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach 10.
Zeiger C-Kurs 2012, 2. Vorlesung Tino Kutschbach tino.kutschbach@campus.tu-berlin.de http://wiki.freitagsrunde.org 10. September 2012 This work is licensed under the Creative Commons Attribution-ShareAlike
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
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
MehrBetriebssysteme, Rechnernetze und verteilte Systeme 1. Crashkurs C (2)
Betriebssysteme, Rechnernetze und verteilte Systeme 1 Crashkurs C (2) Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/
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)
MehrZeiger: 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
MehrProgrammierung 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
Mehr2. 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)
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 9. Zeiger Arbeitsspeicher / Adressen Der Arbeitsspeicher des Computers (RAM) besteht aus einem Feld von Speicherzellen, beginnend bei Adresse
MehrProgrammieren in C. Funktionen mit Zeigern und Adressen. Prof. Dr. Nikolaus Wulff
Programmieren in C Funktionen mit Zeigern und Adressen Prof. Dr. Nikolaus Wulff ByValue versus byreferenz C übergibt immer Kopien der Variablen an Funktionen. Es ist nur dann möglich die Werte von Variablen
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
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.
MehrÜ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:
MehrKapitel 7. Zusammengesetzte Datentypen, Vektoren, Zeichenketten
Kapitel 7 Zusammengesetzte Datentypen, Vektoren, Zeichenketten 1 Gliederung Kapitel 7 Zusammengesetzte Datentypen 7.1 Vektoren 7.2 Sortieren eines Vektors 7.3 Mehrdimensionale Felder 7.4 Umgang mit ein-/zweidimensionalen
MehrVektoren 105. array-qualifier static restrict const volatile array-size-expression assignment-expression * simple-declarator identifier
Vektoren 105 direct-declarator simple-declarator ( simple-declarator ) function-declarator array-declarator array-declarator direct-declarator [ [ array-qualifier-list ] [ array-size-expression ] ] array-qualifier-list
MehrÜ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:
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!
MehrGrundlagen der Programmierung in C++ Arrays und Strings, Teil 1
Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1 Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Das C++ Typsystem simple structured integral enum
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
Mehr+ 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
MehrC++ 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
MehrVerwendung 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
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
MehrArrays. 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
MehrFH München, FB 03 FA WS 06/07. Ingenieurinformatik. Name Vorname Matrikelnummer Sem.Gr.: Hörsaal Platz
FH München, FB 03 FA WS 06/07 Ingenieurinformatik Name Vorname Matrikelnummer Sem.Gr.: Hörsaal Platz Zulassung geprüft vom Aufgabensteller: Teil I Aufg. 2 Aufg. 3 Aufg. 4 Aufg. 5 Summe Note Aufgabensteller:
MehrFelder, Rückblick Mehrdimensionale Felder. Programmieren in C
Übersicht Felder, Rückblick Mehrdimensionale Felder Rückblick Vereinbarung von Feldern: typ name [anzahl]; typ name = {e1, e2, e3,..., en} Die Adressierung von Feldelementen beginnt bei 0 Die korrekte
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
MehrInhalt. 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
MehrZeiger, Arrays und Strings in C und C++
Zeiger, Arrays und Strings in C und 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
Mehr1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r
1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen
Mehr1. Referenzdatentypen: Felder und Strings
1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen
MehrC++ 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
Mehr6. 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.
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
MehrÜbungspaket 14 Eindimensionale Arrays
Übungspaket 14 Eindimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung eindimensionaler Arrays Kapitel: 33 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:
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
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
MehrElementare Datentypen in C++
Elementare Datentypen in C++ bool signed/unsigned char signed/unsigned short int signed/unsigned int signed/unsigned long int (signed/unsigned long long int) float double long double void enum char Der
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
MehrEinführung in die Programmierung Arrays, Zeiger, Strings. Arvid Terzibaschian
Einführung in die Programmierung Arvid Terzibaschian 1 Arrays 2 Arrays: Motivation Gegeben: monatliche Durchschnittstemperaturen der letzten 5 Jahre Gesucht: Mittelwerte für Jahre, Monate, Jahreszeiten,
Mehr6 ZEIGER UND REFERENZEN - ALLGEMEINES
6 ZEIGER UND REFERENZEN - ALLGEMEINES Leitideen: Zeiger sind Adressen mit zusätzlicher Typinformation über das dort gespeicherte Objekt. Die Vereinbarungssyntax soll der Ausdruckssyntax entsprechen und
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
MehrZeichendarstellung. 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Übungspaket 20 Zeiger und Zeigervariablen
Übungspaket 20 Zeiger und Zeigervariablen Übungsziele: Skript: 1. Definition von Zeigervariablen 2. Verwendung von Zeigern 3. Arrays und Adressberechnungen Kapitel: 45 und 46 Semester: Wintersemester 2017/18
MehrFelder, 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
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
Mehr7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});
S. d. I.: Programieren in C Folie 7-1 7 Funktionen 7.1 Definition Prototyp-Syntax: Speicherklasse Typ Name (formale Parameter); der Funktions-Prototyp deklariert eine Funktion, d.h. er enthält noch nicht
Mehr8. 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
MehrKapitel 4: Zeiger. Inhalt. Zeiger Zeigerarithmetik
Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl
MehrRechenzentrum. Programmieren in C. Simone Knief Rechenzentrum der CAU
Programmieren in C Simone Knief der CAU Gliederung Einleitung Komponenten eines C-Programms Daten speichern: Variablen und Konstanten Anweisungen und Ausdrücke Operatoren Kontrollstrukturen Felder und
Mehrfloat *point(float a, float b); // Funktionsdeklaration Zeiger als Funktionswert // point liefert als Wert die Adresse seines Ergebnisses
Zeiger auf Funktionen 1 Zeiger als Funktionswert... 1 2 "Zeiger als Funktionswert" versus "Zeiger auf eine Funktion"... 2 2.1 Das Beispiel zu Zeiger auf eine Funktion veranschaulicht den Sachverhalt...
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
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
MehrC-Kurs 2010 Pointer. 16. September v2.7.3
C-Kurs 2010 Pointer Sebastian@Pipping.org 16. September 2010 v2.7.3 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. C-Kurs Mi Konzepte, Syntax,... printf, scanf Next
Mehr6. Bearbeitung von Strings in C Bearbeitung von Strings in C
Bearbeitung von Strings in C 6-1 Definition des String: 6. Bearbeitung von Strings in C Zeichenstrings werden als Felder von Zeichen abgespeichert: char [ ] ; Wie die Daten (Zeichenfolge)
MehrPraxis der Programmierung
Zeichenketten (Strings), Ein- und Ausgabe Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Zeichenketten (Strings)
MehrCrashkurs 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
MehrObjekttypen. Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays
Objekttypen Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays Primitive- und Objekt-Datentypen Primitive Datentypen benötigen einen vorher genau
MehrC-Crashkurs. Praktikum Systemmanagement und Sicherheit
C-Crashkurs Praktikum Systemmanagement und Sicherheit ZIELE DIESES KURSES 15.04.2014 Dipl.-Inf. M. Bohr C_Crashkurs 2 Compiler gcc verwenden geläufigste Datentypen in C kennen Fehlerbehandlung (ohne Ausnahmeklassen)
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
MehrEinführung in die Programmiersprache C
Einführung in die Programmiersprache C Marcel Arndt arndt@ins.uni-bonn.de Institut für Numerische Simulation Universität Bonn Der Anfang Ein einfaches Programm, das Hello World! ausgibt: #include
MehrFunktionen, Zeiger und Arrays in C Software Entwicklung 1
Funktionen, Zeiger und Arrays in C Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller 1 Funktionen Mit Hilfe von Funktionen kann man (wie mit Prozeduren bzw. Methoden in Java) eine Problemstellung
MehrBereits 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
MehrDatenfelder (Arrays) Vektoren, Matrizen, Tabellen. Dr. Beatrice Amrhein
Datenfelder (Arrays) Vektoren, Matrizen, Tabellen Dr. Beatrice Amrhein Überblick Eindimensionale Arrays o Deklaration, Initialisierung, Zugriff Mehrdimensionale Arrays o Deklaration, Initialisierung, Zugriff
MehrDr. 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-4 5.1.3 Kopieren eindimensionaler Felder... 5-6
MehrAuswahlen (Selektionen)
1 Anhang 10.3 Ein/Ausgaben Eingabe mit Prompt (Beispiel) cout ; // Prompt ohne endl cin
MehrDeklarationen in C. Prof. Dr. Margarita Esponda
Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.
MehrGI 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
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,
Mehr2. Aufgabe (3 Punkte) Ergänzen Sie die leeren Zellen derart, dass sich in einer Zeile die selben Zahlenwerte ergeben.
Programmieren bei Dr. Robert Heß TM&M1, IST1 und ET1 Ende SS 2003 Klausur 1. Aufgabe (2 Punkte) Kodieren Sie folgende Dezimalzahlen in Binärzahlen um. Zeigen Sie den Rechenweg, die negative Zahl soll im
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
MehrEinfü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
MehrEinführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)
Wintersemester 2006/07 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl
MehrEinstieg in die Informatik mit Java
1 / 21 Einstieg in die Informatik mit Java Felder, eindimensional Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 21 1 Überblick: Was sind Felder? 2 Vereinbarung von Feldern
MehrDr. 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
MehrBereits 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
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
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Funktionen Rückblick Operatoren logische Verknüpfungen Zusammengesetzte Operatoren ( Zuweisungsoperatoren ) Kontrollstrukturen Bedingte Anweisungen (if-abfrage, switch-konstrukt)
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
Mehr103 Strukturiert programmieren nach Vorgabe
103 Strukturiert programmieren nach Vorgabe #include #include #define Benzinverbrauch (6.9/100) #define Benzinpreis 1.38 void main() float x,k; printf("geben Sie bitte Ihre gefahrenen
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 008/09 Zusammengesetzte Datentypen - Feld (array) - Verbund (struct) - Aufzählung (enum) Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering
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
MehrModellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {
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
MehrZeichenketten (Strings)
Zeichenketten (Strings) Programme verarbeiten neben numerischen Daten oft auch Daten in Textform. Texte sind Zeichenketten, die auch als Strings bezeichnet werden In C gibt es keinen eigenständigen Datentyp
MehrDatei: 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
MehrZeiger 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 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
MehrZeiger 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
Mehr2. 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)
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
MehrDr. 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
MehrJava Datentypen und Variablen
Informatik 1 für Nebenfachstudierende Grundmodul Java Datentypen und Variablen Kai-Steffen Hielscher Folienversion: 24. Januar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht
MehrAbgeleitete Datentypen
Abgeleitete Datentypen Prof. Dr. Markus Gross Informatik I für D-MAVT (FS 2014) Felder (Arrays) Zeichenketten (Strings) Strukturen (Structs) union, enum & typedef Arrays Ein Array ist ein Datentyp, der
Mehr