Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()
|
|
- Dominic Schumacher
- vor 6 Jahren
- Abrufe
Transkript
1 Ü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 3. beliebiger Arrays Kapitel: 69 Semester: Wintersemester 2017/18 Betreuer: Kevin, Theo, Thomas und Ralf Synopsis: Endlich wird es spannend :-) Einige von euch haben schon bemerkt, dass man bei den Arrays immer schon vorher wissen muss, wie viele Elemente man benötigt. Manchmal weiß man das aber nicht. In diesem Übungspaket üben wir, Speicher dynamisch zu alloziieren und auch wieder freizugeben. Wenn man sich daran erst einmal gewöhnt hat, ist es ganz praktisch. Aber das ist ja immer so...
2 Teil I: Stoffwiederholung Aufgabe 1: Motivation Auf den ersten Blick mag die dynamische Speicherverwaltung überflüssig wie ein Kropf zu sein, denn wir können ja alle Variablen, insbesondere Arrays, schon zur Übersetzungszeit festlegen. Erste Antwort: sie ist natürlich nicht überflüssig, würden wir sie sonst behandeln ;-)? Überlege und beschreibe in eigenen Worten, in welchen Fällen eine dynamische Speicherverwaltung notwendig bzw. nützlich ist. Die Antwort steht eigentlich schon in der Fragestellung: denn wir können ja alle Variablen insbesondere Arrays schon zur Übersetzungszeit festlegen. Das können wir in vielen Fällen nämlich genau nicht. Beispielsweise wissen wir nicht, wie viele Zahlen wir im Rahmen des Programms verarbeiten müssen. Oder wir wissen nicht, wie lang die zu verarbeitenden Zeichenketten sind. Das heißt eben auch, dass wir die Größe eines Arrays eben nicht immer von vornherein wissen und unsere Arrays beim Schreiben des Programms definieren können. Entsprechend müssen wir uns damit abfinden, dass die dynamische Speicherverwaltung insbesondere bei Arrays auch bei uns zur Anwendung kommt. Aufgabe 2: Fragen zu den Grundlagen Für die dynamische Speicherverwaltung verwenden wir im Wesentlichen zwei Funktionen. Wie heißen diese Funktionen und welche Signaturen haben sie? Dynamische Speicherallokation: void * malloc( int size ) Dynamische Speicherfreigabe: void free( void * ptr ) Welche Datei muss man für diese Funktionen einbinden? In welchem Segment liegt der neue Speicher? Wie/in welcher Form wird der Speicher zurückgegeben? Welchen Wert hat der Zeiger im Fehlerfalle? #include <stdlib.h> Auf dem Heap Als Zeiger auf das erste Byte Es ist ein Null-Zeiger Aufgabe 3: Ein einfaches Beispiel Im Folgenden betrachten wir eine kleine, nutzlose Beispielanwendung. Diese Anwendung fragt den Benutzer nach der Zahl der Parameter, die er benötigt. Anschließend alloziiert das Programm ein entsprechendes Array und, sofern dies erfolgreich war, initialisiert es die Elemente mit den Werten 0, 2, 4,... Einführung in die Praktische Informatik, Wintersemester 2017/
3 1 # include <stdio.h> 2 # include < stdlib.h> 3 4 int main ( int argc, char ** argv ) 5 { 6 int i, size, *p; 7 printf ( " wie viele int s benoetigst du? " ); 8 scanf ( "%d", & size ); 9 if ( size > 0 ) 10 { 11 p = malloc ( size * sizeof ( int ) ); 12 for ( i = 0; i < size ; i ++ ) 13 p[ i ] = i * 2; 14 printf ( " Kontrollausgabe :" ); 15 for ( i = 0; i < size ; i ++ ) 16 printf ( " %d", p[ i ] ); 17 printf ( "\n" ); 18 } 19 else printf ( " sorry, da kann ich nicht helfen \ n" ); 20 } Wir wollen nun von euch, dass ihr ein Speicherbildchen malt, in denen die Variablen i, size und p enthalten sind. Ebenso wollen wir den neu alloziierten Speicherbereich sowie die in den Zeilen 12 und 13 generierten Initialwerte sehen. Für das Beispiel nehmen wir an, dass der Nutzer die Zahl 3 eingegeben hat. Mit anderen Worten: Wie sieht der Arbeitsspeicher unmittelbar vor Ausführung der Programmzeile 14 aus? Segment: Stack Adresse Variable Wert 0xFE28 int * p : 0xF040 0xFE24 int size : 3 0xFE20 int i : 3 Segment: Heap Adresse Variable Wert 0xF048 int [ 2 ] : 4 0xF044 int [ 1 ] : 2 0xF040 int [ 0 ] : Wintersemester 2017/18, Einführung in die Praktische Informatik
4 Teil II: Quiz Aufgabe 1: Speicherallokation In der folgenden Tabelle stehen in den drei Spalten der Reihe nach das auszuführende Kommando, die angelegte Datenstruktur und die Zahl der Bytes, die diese im Arbeitsspeicher belegt. Dabei gehen wir davon aus, dass ein char 1 Byte, ein int sowie ein Zeiger jeweils 4 Bytes und ein double 8 Bytes im Arbeitsspeicher belegt. Vervollständige die fehlenden Spalten. Im Sinne eines etwas erhöhten Anspruchs haben wir noch die folgende Struktur: 1 struct bla { int bla_ bla ; double blub_ blub ; }; malloc()-aufruf Datenstruktur Größe malloc(3 * sizeof( int )) Array mit 3 ints 12 malloc(5 * sizeof( double )) Array mit 5 double 40 malloc( 12 ) Vermutlich ein Array mit 12 char 12 malloc(2 * sizeof(struct bla)) Array mit 2 struct bla Elementen 24 malloc(2 * sizeof(struct bla *)) Array mit 2 Zeigern auf auf Elemente 8 vom Typ struct bla malloc(5 * sizeof(char *)) Array mit 5 char-zeigern 20 malloc(13) ein char-array 13 malloc(6 * sizeof(double **)) ein Array mit 6 Zeigern auf double- Zeiger 24 Aufgabe 2: Speicherfreigabe Erkläre mit eigenen Worten, was folgende Funktion macht: 1 void tst_and_free ( void * p ) 2 { 3 if ( p!= 0 ) 4 free ( p ); 5 } Diese Funktion gibt Speicher wieder frei, da sie offensichtlich die Funktion free() aufruft. Allerding testet sie vorab, ob es sich um einen regulären Zeigerwert handelt. Mit anderen Worten: Diese Funktion vermeidet es, einen Null-Zeiger versehentlich freizugeben, da dies unter Umständen innerhalb von free() zu einem Programmabsturz führen könnte. Einführung in die Praktische Informatik, Wintersemester 2017/
5 Teil III: Fehlersuche Aufgabe 1: Fehler bei malloc() und free() Der berühmt-berüchtigte Manager Dr. M. al Loc fand die Idee mit den dynamischen Datenstrukturen so spannend, dass er es gleich einmal ausprobierte. Er wollte eine Funktion haben, die ihm ein Array mit size doubles erzeugt, wobei die einzelnen Elemente mit den Werten 0.0, 1.0,... initialisiert werden sollen. Am Ende soll der Speicher wieder freigegeben werden. Finde und korrigiere die Fehler: 1 # include < stdio. h > // for printf () und scanf () 2 # include < stdlib. h > // for malloc () and free () 3 4 double * mk_darray ( int n ) 5 { 6 int i; double d_a ; // compact due to space 7 if (( d_a = malloc ( n ))!= 0 ) 8 for ( i = 0; i < n; i ++ ) 9 d_a [ i ] = i; 10 return d_a ; 11 } int main ( int argc, char ** argv ) 14 { 15 int i, size ; double * dp; // compact due to space 16 printf (" wie viele parameter? "); scanf ("%d", & size ); 17 dp = mk_darray ( size ); 18 printf ( " hier das ergebnis :" ); 19 for ( i = 0; i < size ; i ++ ) 20 printf ( " %5.2 f", dp[ i ] ); 21 printf ( "\n" ); 22 free ( dp ); // free the memory 23 free ( dp ); // just to be absolutely sure 24 return 0; 25 } Zeile Fehler Erläuterung Korrektur 6 * fehlt Die Variable d a muss natürlich als Zeiger definiert werden, da malloc() einen Zeiger auf einen neuen Speicherbereich zurückgibt. *d a 29-4 Wintersemester 2017/18, Einführung in die Praktische Informatik
6 Zeile Fehler Erläuterung Korrektur 7 sizeof() fehlt Ein ganz typischer Fehler: In diesem Falle würde malloc() nur n Bytes bereitstellen. Wir benötigen aber n * sizeof(double) Bytes, was wir beim Aufruf von malloc() unbedingt berücksichtigen müssen. sizeof() ff. Test auf Null-Zeiger fehlt In Zeile 17 wird ein neuer Speicherplatz dynamisch alloziiert. Aber dies kann schief gehen, was durch einen Null-Zeiger angezeigt wird. Da man Null-Zeiger nicht dereferenzieren (auf die Inhalte zugreifen) darf, muss der nachfolgende Programmtext geklammert werden. if () /23 ein free() zu viel Programm mit Korrekturen: Einen zuvor alloziierten Speicherplatz darf man nur einmal freigeben. Das Ergebnis durch den zweiten Aufruf ist unbestimmt und kann hier oder später zu einem Programmabsturz führen. ein free() streichen 1 # include < stdio. h > // for printf () und scanf () 2 # include < stdlib. h > // for malloc () and free () 3 4 double * mk_darray ( int n ) 5 { 6 int i; double * d_a ; // compact due to space 7 if (( d_a = malloc ( n * sizeof ( double )))!= 0 ) 8 for ( i = 0; i < n; i ++ ) 9 d_a [ i ] = i; 10 return d_a ; 11 } int main ( int argc, char ** argv ) 14 { 15 int i, size ; double * dp; // compact due to space 16 printf (" wie viele parameter? "); scanf ("%d", & size ); 17 if ( dp = mk_darray ( size )) 18 { 19 printf ( " hier das ergebnis :" ); 20 for ( i = 0; i < size ; i ++ ) 21 printf ( " %5.2 f", dp[ i ] ); 22 printf ( "\n" ); 23 free ( dp ); 24 } 25 return 0; 26 } Einführung in die Praktische Informatik, Wintersemester 2017/
7 Teil IV: Anwendungen Aufgabe 1: Aneinanderhängen zweier Zeichenketten 1. Aufgabenstellung Entwickle eine Funktion, die als Eingabeparameter zwei Zeiger auf je eine Zeichenkette erhält, diese beiden Zeichenketten zu einer neuen Zeichenkette zusammenfügt und das Ergebnis als Zeiger auf diese zurückgibt. Beispiel: Aufruf: my strcat( "Prof.", "Weiss-Nicht" ) Ergebnis: "Prof. Weiss-Nicht" Diese Funktion kann wieder einfach mittels des argc/argv-mechanismus getestet werden. 2. Vorüberlegungen Was können wir aus der Aufgabenstellung direkt ablesen? 1. Wir müssen zwei Zeichenketten zusammenfügen, deren Längen wir zur Übersetzungszeit noch nicht wissen. 2. Daraus folgt, dass wir das Ergebnis nicht auf dem Stack ablegen können, sondern uns den benötigten Speicherplatz dynamisch vom Heap besorgen müssen. 3. Die neue Zeichenkette muss so lang sein, dass die beiden alten hinein passen, dann noch ein Leerzeichen und am Ende ein Null-Byte. 3. Pflichtenheft Aufgabe : Funktion zum Verknüpfen zweier Zeichenketten. Das Ergebnis wird auf dem Heap abgelegt. Parameter : Zwei Eingabeparameter p1 und p2 vom Typ char * Rückgabewert : Einen Zeiger auf eine neue Zeichenkette vom Typ char * 4. Testdaten Ähnlich wie in der Aufgabenstellung beschrieben. Bei Verwendung des argc/argv- Mechanismus nehmen wir argv[ 1 ] als ersten Namen und alle weiteren Parameter als zweiten Namen. Beispiel: Eingabe:./my-strcat Dr. Peter Maria Ausgabe: Dr. Peter Dr. Maria 29-6 Wintersemester 2017/18, Einführung in die Praktische Informatik
8 5. Implementierung Da wir den argc/argv-mechanismus schon eingehend geübt haben, können wir uns ganz auf die neu zu entwickelnde Funktion konzentrieren. Die wesentlichen Punkte standen schon in den Vorüberlegungen. Wir erhalten zwei Zeichenketten. Die Länge der neuen Zeichenkette muss die Summe der beiden eingehenden Zeichenketten sein, plus eins für das Leerzeichen und eins für das abschließende Null-Byte. Das lässt sich wie folgt ausdrücken: Funktion zum Aneinanderhängen von Zeichenketten Parameter: Pointer to Char: p1, p2 Variablen: Integer: len1, len2 Pointer to char: res // zwei laengenwerte // der rueckgabewert setze len1 = strlen( p1 ) setze len2 = strlen( p2 ) setze res = malloc(len1 + len2 + 2) wenn res 0 dann kopiere p1 an die Stelle res[ 0 ] kopiere ein Leerzeichen an die Stelle res[ len1 ] kopiere p2 an die Stelle res[len1 + 1] kopiere ein Null-Byte an die Stelle res[len len2] return res 6. Kodierung Unsere Funktion my strcat(): 1 # include <stdio.h> // for I/O 2 # include < string. h > // for strlen () und strcpy () 3 # include < stdlib. h > // for malloc () 4 5 char * my_strcat ( char * p1, char * p2 ) 6 { 7 char * res ; 8 int len1 = strlen ( p1 ), len2 = strlen ( p2 ); 9 if ( res = malloc ( len1 + len2 + 2 )) 10 { 11 strcpy ( res, p1 ); 12 res [ len1 ] = ; 13 strcpy ( res + len1 + 1, p2 ); 14 res [ len1 + len2 + 1] = \0 ; 15 } 16 return res ; 17 } Einführung in die Praktische Informatik, Wintersemester 2017/
9 Das ist unser Hauptprogramm zum Testen: 18 int main ( int argc, char ** argv ) 19 { 20 int i; 21 char * combi ; 22 for ( i = 2; i < argc ; i ++ ) 23 if ( combi = my_strcat ( argv [ 1 ], argv [ i ] )) 24 { 25 printf ( " my_strcat : %s \n", combi ); 26 free ( combi ); // otherwise : memory leak! 27 } 28 } 29-8 Wintersemester 2017/18, Einführung in die Praktische Informatik
10 Aufgabe 2: Verallgemeinertes strcat() 1. Aufgabenstellung In dieser Aufgabe soll die Funktion my strcat() der vorherigen Aufgabe erweitert werden. Statt nur zwei Zeichenketten zusammenzufügen, soll die Funktion diesmal in der Lage sein, beliebig viele Zeichenketten zu verarbeiten. Die einzelnen Zeichenketten sollen wieder mittels eines Leerzeichens voneinander getrennt werden. Natürlich muss die gesamte Zeichenkette wieder mit einem Null-Byte abgeschlossen werden. Innerhalb dieser Übungsaufgabe nennen wir diese Funktion my nstrcat() Beispiel: Bei Übergabe der drei Parameter "Frau", "Peter" und "Otti" soll das Ergebnis "Frau Peter Otti" lauten. Zum Testen bedienen wir uns wieder des argc/argv-mechanismus. 2. Vorüberlegungen Auch hier ist es wieder sinnvoll, ein paar Vorüberlegungen anzustellen. Doch diesmal werden wir diese als Fragen formulieren, die ihr beantworten müsst. Erfordert die Aufgabenstellung eine dynamische Bearbeitung mittels malloc()? Falls ja, warum? Ja, unbedingt Anzahl und Längen der Zeichenketten sind unbekannt Falls nein, warum nicht? Die Aufgabe wäre in einem anderen Übungspaket ;-) Wie übergeben wir die Zeichenketten? Welchen Datentyp hat dieser Parameter? Benötigen wir noch einen zweiten Paramenter? Falls ja, welchen Typ hat dieser Parameter? Welchen Typ hat die Funktion? Wie lautet die vollständige Funktionsdeklaration? Wie bestimmen wir die Länge einer Zeichenkette? Wie lang ist die Ergebnis- Zeichenkette? In einem Array verpackt Array of Pointer to Char: char ** Ja int size char * char *my nstrcat( char **str arr, int size ) len = strlen( zeichenkette ) size 1 i=0 strlen( zeichenkette[ i ] ) Einführung in die Praktische Informatik, Wintersemester 2017/
11 3. Pflichtenheft Aufgabe : Funktion zum Verknüpfen von n Zeichenketten. Das Ergebnis wird auf dem Heap abgelegt. Parameter : Zwei Eingabeparameter: char **str arr und int size Rückgabewert : Einen Zeiger auf eine neue Zeichenkette vom Typ char * 4. Testdaten Wir bedienen uns wieder des argc/argv-mechanismus: Beispiel: Kommando:./my-strcat Dr. Peter Maria Ausgabe:./my-strcat Dr. Peter Maria als eine Zeichenkette 5. Implementierung Wir können uns gleich auf die Funktion my nstrcat() konzentrieren. Wir müssen der Reihe nach die folgenden Schritte durchführen: Erstens, Berechnung der Gesamtlänge der neuen Zeichenkette. Diese ist die Summe der Einzellängen plus die Anzahl der Zeichenketten (n 1 Leerzeichen als Trenner sowie ein Null-Byte am Ende). Zweitens, Allokation der neuen Zeichenkette. Und drittens, Hineinkopieren der einzelnen Zeichenketten mit jeweils einem anschließenden Leerzeichen. Das letzte Leerzeichen wird durch ein Null-Byte ersetzt. Bei jedem Kopiervorgang müssen wir in der neuen Zeichenkette um so viele Positionen weiterrücken, wie die zuletzt kopierte Zeichenkette lang war. Das lässt sich wie folgt ausdrücken: Funktion zum Aneinanderhängen von Zeichenketten Parameter: Array of Pointer to Char: str arr Integer: size Variablen: Integer: i, len, pos setze len = o für i = 0 bis size - 1 Schrittweite 1 wiederhole setze len = strlen( str arr[ i ] ) setze res = malloc( len + size ) wenn res 0 dann setze pos = 0 für i = 0 bis size - 1 Schrittweite 1 wiederhole kopiere str arr[ i ] an die Stelle res[ pos ] setze pos = pos + strlen( str arr[ i ] ) setze res[ pos ] = Leerzeichen setze pos = pos + 1 setze res[ pos ] = Null-Byte return res Wintersemester 2017/18, Einführung in die Praktische Informatik
12 6. Kodierung 1 # include <stdio.h> // for I/O 2 # include < string. h > // for strlen () und strcpy () 3 # include < stdlib. h > // for malloc () 4 5 char * my_nstrcat ( char ** str_arr, int size ) 6 { 7 char * res ; 8 int i, len, pos ; 9 for ( i = 0, len = size ; i < size ; i ++ ) 10 len += strlen ( str_arr [ i ] ); 11 if ( res = malloc ( len )) 12 { 13 for ( i = pos = 0; i < size ; i ++ ) 14 { 15 strcpy ( res + pos, str_ arr [ i ] ); 16 pos += strlen ( str_arr [ i ] ); 17 res [ pos ] = ; 18 pos ++; // advance to the next position 19 } 20 res [ pos - 1 ] = \0 ; // replace last blank 21 } 22 return res ; 23 } int main ( int argc, char ** argv ) 26 { 27 char * combi ; 28 if ( combi = my_nstrcat ( argv, argc )) 29 { 30 printf ( " my_nstrcat : %s \n", combi ); 31 free ( combi ); // just to get used to it 32 } 33 } Anmerkung: Wir hätten auch auf eine der beiden Variablen len oder pos verzichten können. Nur fanden wir es so verständlicher. Und die Einsparung einer int-variablen fällt bei den Zeichenketten nicht ins Gewicht. Einführung in die Praktische Informatik, Wintersemester 2017/
Ü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Ü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
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:
MehrÜbungspaket 32 Einfach verkettete, sortierte Liste
Übungspaket 32 Einfach verkettete, sortierte Liste Übungsziele: Skript: 1. Aufbau einer einfach verketteten, sortierten Liste 2. Traversieren von Listen 3. Vereinfachung durch ein Dummy-Element Kapitel:
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:
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
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:
MehrÜbungspaket 12 Der Datentyp char
Übungspaket 12 Der Datentyp char Übungsziele: Skript: 1. Umgang mit dem Datentyp char, 2. Deklarationen von char-variablen, 3. char-konstanten 4. und char-rechenoperationen. Kapitel: 29 bis 31 sowie 24,
MehrÜbungspaket 9 Logische Ausdrücke
Übungspaket 9 Logische Ausdrücke Übungsziele: Skript: 1. Umgang mit logischen Vergleichs- und Verknüpfungsoperatoren 2. Bilden einfacher und komplexer logischer Ausdrücke Kapitel: 22 Semester: Wintersemester
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 31 Entwicklung eines einfachen Kellerspeiches (Stacks)
Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks) Übungsziele: Skript: 1. Definieren einer dynamischen Datenstruktur 2. Dynamische Speicher Speicherallokation 3. Implementierung eines
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
MehrÜbungspaket 19 Programmieren eigener Funktionen
Übungspaket 19 Programmieren eigener Funktionen Übungsziele: Skript: 1. Implementierung und Kodierung eigener Funktionen 2. Rekapitulation des Stack-Frames 3. Parameterübergabe mittels Stack und Stack-Frame
MehrÜbungspaket 8 Datentyp int
Übungspaket 8 Datentyp int Übungsziele: Skript: 1. Umgang mit dem Datentyp int, 2. Deklarationen von int-variablen, 3. int-konstanten 4. und int-rechenoperationen. Kapitel: 21 Semester: Wintersemester
MehrÜbungspaket 7 Angemessenes Formatieren von C-Programmen
Übungspaket 7 Angemessenes Formatieren von C-Programmen Übungsziele: Skript: 1. Gute Layout-Struktur durch Einrücken. Richtiges Verwenden von Kommentaren Kapitel: 19 Semester: Wintersemester 016/17 Betreuer:
MehrÜbungspaket 17 Der gcc Compiler
Übungspaket 17 Der gcc Compiler Übungsziele: Skript: 1. Sicherer Umgang mit gemischten Ausdrücken 2. Herleiten der unterschiedlichen Datentypen in gemischten Ausdrücken 3. Kenntnis über die implizite Durchführung
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
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
MehrÜbungspaket 24 Zeichenketten
Übungspaket 4 Zeichenketten Übungsziele: Skript: 1. Verständnis über die interne Repräsentation von Zeichenketten. Arbeiten mit Zeichenketten 3. Definition konstanter Zeichenketten 4. Verwendung diverser
MehrÜbungspaket 21 Funktionen mit Zeigern und Arrays als Parameter
Übungspaket 21 Funktionen mit Zeigern und Arrays als Parameter Übungsziele: Skript: 1. Funktionen mit Zeigern als Parameter 2. Emulation von Variablenparametern 3. Funktionen mit Arrays als Parameter 4.
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
MehrBetriebssysteme. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk.
Betriebssysteme Tafelübung 4. Speicherverwaltung http://ess.cs.tu-dortmund.de/de/teaching/ss217/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware
MehrBetriebssysteme. Agenda. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk.
Betriebssysteme Tafelübung 4. Speicherverwaltung http://ess.cs.tu-dortmund.de/de/teaching/ss217/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware
MehrÜbungspaket 4 Funktionszeiger
Übungspaket 4 Funktionszeiger Übungsziele: Literatur: 1. Verstehen von Funktionszeigern. 2. Anwenden von Funktionszeigern. C-Skript 1, Kapitel: 85 Semester: Wintersemester 2017/18 Betreuer: Kevin, Peter
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
MehrÜbungspaket 13 Der Datentyp double
Übungspaket 13 Der Datentyp double Übungsziele: Skript: 1. Umgang mit dem Datentyp double, 2. Deklarationen von double-variablen, 3. double-konstanten 4. und double-rechenoperationen. Kapitel: 32 Semester:
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.
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...............................
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:
MehrÜbungspaket 22 Rekursive Funktionsaufrufe
Übungspaket 22 Rekursive Funktionsaufrufe Übungsziele: Skript: 1. Technische Voraussetzungen für rekursive Funktionsaufrufe 2. Umsetzung mathematisch definierter Rekursionen in entsprechende C-Programme
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
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
MehrÜbungspaket 30 Kopieren von Dateien
Übungspaket 30 Kopieren von Dateien Übungsziele: Skript: 1. Öffnen und Schließen von Dateien 2. Einfaches Lesen und Schreiben 3. Behandlung der EOF-Marke 4. Kopieren ganzer Dateien Kapitel: 59 bis 67 und
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
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)
MehrC/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
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
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
MehrÜbungspaket 13 Der Datentyp double
Übungspaket 13 Der Datentyp double Übungsziele: Skript: 1. Umgang mit dem Datentyp double, 2. Deklarationen von double-variablen, 3. double-konstanten 4. und double-rechenoperationen. Kapitel: 32 Semester:
MehrNachname:... Vorname:... MatrNr.:... Klausur PR2. int main() { char Text[] = "Sehr geehrte Damen und Herren!"; char *tmp=text;
Nachname:... Vorname:... MatrNr.:... Klausur PR2 HAW-Hamburg, Fakultät Technik und Informatik, Department Informations- und Elektrotechnik Dr. Robert Heß, 26.1.2009 Bearbeitungsdauer: 90 min Hilfsmittel:
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
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!
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
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
MehrFakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012
WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **
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
MehrÜbungspaket 17 Der gcc Compiler
Übungspaket 17 Der gcc Compiler Übungsziele: Skript: 1. Sicherer Umgang mit gemischten Ausdrücken 2. Herleiten der unterschiedlichen Datentypen in gemischten Ausdrücken 3. Kenntnis über die implizite Durchführung
MehrKlausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:
Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 12 Pkt.) Was liefert
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
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
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. 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
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
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
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
MehrZeichenketten (1) Literale von Zeichenketten werden in doppelte Anführungszeichen gesetzt
Zeichenketten (1) Literale Literale von Zeichenketten werden in doppelte Anführungszeichen gesetzt "Hallo Welt" Mehrere solcher Literale gelten als eine Zeichenkette, wenn sie nur durch Whitespaces (Leerzeichen,
MehrKlausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 12 Pkt.) Was liefert
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen 3.2 Auswahl an Stringfunktionen W. Tasin, M.Sc. Fakultät 04 tasin@hm.edu Allgemeines (1) Die ANSI-Norm definiert auch nützliche Funktionen zur ASCIIZ-Stringbearbeitung.
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)
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
MehrProgrammieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff
Programmieren in C Rekursive Strukturen Prof. Dr. Nikolaus Wulff Rekursive Strukturen Häufig müssen effizient Mengen von Daten oder Objekten im Speicher verwaltet werden. Meist werden für diese Mengen
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
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
MehrEinführung in die Programmiersprache C
Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:
MehrÜbungspaket 1 Grundlagen: von der Hardware zum Programmieren
Übungspaket 1 Grundlagen: von der Hardware zum Programmieren Übungsziele: Skript: 1. Die Bedeutung des Programmierens für mein Studium und meine spätere Berufstätigkeit 2. Was ist eine erfolgreiche Lernstrategie?
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
MehrÜbungspaket 32 Einfach verkettete, sortierte Liste
Übungspaket 32 Einfach verkettete, sortierte Liste Übungsziele: Skript: 1. Aufbau einer einfach verketteten, sortierten Liste 2. Traversieren von Listen 3. Vereinfachung durch ein Dummy-Element Kapitel:
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
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)
MehrLösungshinweise/-vorschläge zum Übungsblatt 13: Software-Entwicklung 1 (WS 2017/18)
Dr. Annette Bieniusa Mathias Weber, M. Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungshinweise/-vorschläge zum Übungsblatt 13: Software-Entwicklung 1 (WS 2017/18)
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/
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
MehrEinführung in die Programmiersprache C
Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:
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
MehrOutline. 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
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)
MehrÜbungspaket 1 Grundlagen: von der Hardware zum Programmieren
Übungspaket 1 Grundlagen: von der Hardware zum Programmieren Übungsziele: Skript: 1. Die Bedeutung des Programmierens für mein Studium und meine spätere Berufstätigkeit 2. Was ist eine erfolgreiche Lernstrategie?
MehrFH Ravensburg-Weingarten Schriftlich Prüfung Programmieren
FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren Prof. Dr. M. Zeller Datum, Zeit Aufgabenblätter erreichbare Punktzahl zugelassene Hilfsmittel, 0800 1000 Uhr (120 min) 16 Seiten (einschl. Deckblatt)
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
MehrPROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl
PROGRAMMIEREN MIT C Allgemeine hinweise Alles was hier beschrieben wird, soll auch ausprobiert werden. Warum C? Weil die coolen Dinge mit C am einfachsten gehen. Das werden wir in den folgenden Übungen
MehrC++ 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
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
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,
MehrEine Mini-Shell als Literate Program
Eine Mini-Shell als Literate Program Hans-Georg Eßer 16.10.2013 Inhaltsverzeichnis 1 Eine Mini-Shell 1 1.1 Einen Befehl parsen......................... 2 1.2 Was tun mit dem Kommando?...................
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.
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
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
Mehr1. 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:
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.
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
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
MehrÜbungspaket 30 Kopieren von Dateien
Übungspaket 30 Kopieren von Dateien Übungsziele: Skript: 1. Öffnen und Schließen von Dateien 2. Einfaches Lesen und Schreiben 3. Behandlung der EOF-Marke 4. Kopieren ganzer Dateien Kapitel: 59 bis 67 und
MehrKlausur. 2. 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 Anfang SS 2003 Klausur 1. Aufgabe (2 Punkte) Kodieren Sie folgende Dezimalzahlen in Binärzahlen um. Zeigen Sie den Rechenweg, die negative Zahl soll
MehrTag 4 Repetitorium Informatik (Java)
Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)
MehrHochschule Darmstadt Informatik-Praktikum WS 2017/2018 WIng Bachelor 6. Aufgabenblatt Zeiger, verkettete Liste, Dateieingabe und -ausgabe
Aufgabe 6: Häuser verwalten - dynamisch Für ein Schneeräumungsunternehmen soll ein Programm zur Verwaltung von Häuserlisten geschrieben werden. Das Programm soll in der Lage sein, zu einem Haus die wichtigsten
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
MehrProbeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten
Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, 13.00-14.45 Uhr Bearbeitungszeit: 105 Minuten Schalten Sie ihr Mobiltelefon aus. Bei der Klausur ist als einziges
MehrKlausur "ADP" SS 2015
PD Dr. J. Reischer 20.7.2015 Klausur "ADP" SS 2015 Nachname, Vorname Abschluss (BA, MA, FKN etc.) Matrikelnummer, Semester Versuch (1/2/3) Bitte füllen Sie zuerst den Kopf des Angabenblattes aus! Die Klausur
Mehr