Software Entwicklung 1
|
|
- Sabine Sigrid Schmitz
- vor 6 Jahren
- Abrufe
Transkript
1 Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern
2 Einführung in C Bieniusa Software Entwicklung 1 2/ 50
3 Warum C in SE1? Meist verwendete Sprache weltweit Viele wichtige Einsatzgebiete: Systemprogrammierung, eingebettete Systeme, Numerik und Simulationen, Hochleistungsrechner Prozedurale Programmiersprache Einblick in Speichermanagement Essentiell, um auch in anderen Sprachen effizienten Code zu schreiben! Wie kann ich eine Speicheradressen direkt ansprechen? Wie werden Objekte / Daten / Arrays im Speicher verwaltet? Konzept: Pointer / Zeiger Gleiche Syntax - unterschiedliche Semantik! Bieniusa Software Entwicklung 1 3/ 50
4 Abgrenzung: C vs. C++ vs. Java Java und C++ sind C-ähnliche Sprachen C++ ist Geschwistersprache von C Erweiterung um Objekt-Orientierung Nicht vollständig kompatibel ( Typsystem) Java betont Plattformunabhängigkeit Java Virtual Machine Als sichere Sprache konzipiert Bieniusa Software Entwicklung 1 4/ 50
5 Hello World! 1 # include <stdio.h> 2 3 /* Hello - World in C */ 4 int main ( void ) // Hauptprogramm 5 { 6 printf (" Hello world!\n"); 7 return 0; 8 } Bieniusa Software Entwicklung 1 5/ 50
6 Dateien in C Programmeinheit besteht aus Quellcode-Datei (.c) und (evtl.) Header-Datei (.h) Getrennte Übersetzung der Quellcode-Dateien in Object-Dateien (.o /.obj) möglich Linker (dt. Binder) fasst Object-Dateien zu ausführbaren Programmen zusammen ( /.exe) Bieniusa Software Entwicklung 1 6/ 50
7 Compile, Link, Execute 0. Präprozessor: Vorverarbeitungsschritt, wird automatisch vom Compiler aufgerufen Präprozessor-Anweisungen sind markiert durch # z.b. Inhalt der mit #include eingebundenen Header-Dateien wird in die zu compilierende Datei kopiert 1. Compiler: ruft den Präprozessor auf Datei foo.c auf und übersetzt in eine Object-Datei foo.o: > clang -c foo.c 2. Linker: fügt mehrere Object-Dateien (foo.o, bar.o, baz.o) zu einem Programm myprog zusammen: > clang foo.o bar.o baz.o -o myprog Dieses kann dann direkt ausgeführt werden: >./myprog Bieniusa Software Entwicklung 1 7/ 50
8 Übersetzung von Programmen Falls das Programm nur aus einer Datei besteht, kann man es in einem Schritt compilieren und linken: > clang foo.c -o foo Name nach -o ist der Name für die ausführbare Datei; clang foo.c erzeugt (aus historischen Gründen) als ausführbares Programm die Datei a.out (bzw. a.exe unter Windows) Bieniusa Software Entwicklung 1 8/ 50
9 Basisdatentypen short, int, long float, double char ganzzahlige Wert Gleitkommawerte Zeichen Wertebereich ist maschinenabhängig Unterscheidung signed vs. unsigned Typen mit fester Größe int8_t, int16_t, int32_t in Header-Datei stdint.h Bieniusa Software Entwicklung 1 9/ 50
10 Boolsche Werte Keine boolschen Werte in C Vergleiche wie i > j und logische Operatoren sind vom Typ int Wert 1, falls sie wahr sind, und 0, andernfalls In Bedingungen (bei if, while, for usw.) bedeutet wahr lediglich von Null verschieden. if (Ausdruck) {...} ist äquivalent zu if ((Ausdruck)!= 0) {...} Bieniusa Software Entwicklung 1 10/ 50
11 Variablen int x; /* Deklaration ohne Initialisierung */ int y = 3; /* Deklaration mit Initialisierung */ Lokale Variablen sollten vor erster Verwendung initialisiert werden! Lesen von uninitialisierten Variablen ist undefiniert Option -Wall beim Compilieren liefert Hinweise Bieniusa Software Entwicklung 1 11/ 50
12 Frage: Was passiert bei der Ausführung dieses Programms? 1 # include <stdio.h> 2 3 int main ( void ) 4 { 5 int y = 0; 6 int x = 3/ y; 7 8 printf (" Hello world!\n"); 9 printf ("%d/n",x); 10 return 0; 11 } Bieniusa Software Entwicklung 1 12/ 50
13 Undefiniertes Verhalten in C Warnung! Permissible undefined behavior ranges from ignoring the situation completely with unpredictable results, to having demons fly out of your nose. Null Pointer Dereferenzierung (Signed) Integer Overflow Lesen von uninitialisierten Variablen Verwendung von Speicher nach Freigabe Quelle: Bieniusa Software Entwicklung 1 13/ 50
14 Funktionen Bieniusa Software Entwicklung 1 14/ 50
15 Rückgabewert und Parameter I Funktionen, die keinen Rückgabewert liefern, haben void als Rückgabetyp. Bei Funktionen, die keine Parameter nehmen, verwenden wir void anstelle der Parameterdeklaration. Enthält eine Funktionsdeklaration keinerlei Parameterinformation, wird angenommen, dass die Funktion beliebig viele Parameter nimmt. Bieniusa Software Entwicklung 1 15/ 50
16 Rückgabewert und Parameter II 1 int f( int x) { 2 return x; 3 } 4 5 int g() { 6 return 8; 7 } 8 9 int h( void ) { 0 return 3; 1 } 2 3 int main ( void ) 4 { 5 g (5) ; 6 f (5) ; 7 h (3) ; 8 return 0; 9 } $ clang noparams.c -o noparams noparams.c:15:8: warning: too many arguments in call to g g(5); ~ ^ noparams.c:17:7: error: too many arguments to function call, expected 0, have 1 h(3); ~ ^ noparams.c:17:1: note: h declared here int h(void) { ^ 1 warning and 1 error generated. Bieniusa Software Entwicklung 1 16/ 50
17 Reihenfolge von Funktionsdefinitionen Eine Funktion muss vor ihrer Verwendung deklariert werden, entweder mit Implementierung oder Funktionsprototyp. 1 # include <stdio.h> 2 3 /* Funktionsprototyp */ 4 double square ( double x); 5 6 int main ( void ) 7 { 8 double x = 2.; 9 printf ("%f %f\n", x, square (x)); 10 return 0; 11 } /* Funktionsdefinition */ 14 double square ( double x) 15 { 16 return x * x; 17 } Bieniusa Software Entwicklung 1 17/ 50
18 Lokale vs. globale Variablen 1 # include <stdio.h> 2 3 int i = 90; /* globale Variable */ 4 5 int main ( void ) 6 { 7 int j = 25; /* lokale Variable */ 8 { 9 int j = 3; /* lokale Variable */ 10 printf ("%d ",j); 11 } 12 printf ("%d ",j); 13 printf ("%d\n",i); 14 return 0; 15 } Bieniusa Software Entwicklung 1 18/ 50
19 Zeiger Bieniusa Software Entwicklung 1 19/ 50
20 Variablen Der Bezeichner erlaubt es, die Variable innerhalb ihres Gültigkeitsbereichs zu verwenden. Der aktuelle Wert kann gelesen oder durch einen anderen Wert ersetzt werden. Der Datentyp bestimmt, welche Werte eine Variable repräsentieren kann. Die Speicheradresse gibt den Ort im Speicher an, wo der Wert abgespeichert wird. Bieniusa Software Entwicklung 1 20/ 50
21 Zeiger Ein Zeiger (engl. pointer) ist ein Wert, der eine Speicheradresse bezeichnet. Ein Zeiger referenziert einen Wert, wenn dieser Wert an der entsprechenden Speicheradresse gespeichert ist. Zeiger können beliebige Datentypen, ja sogar Funktionen referenzieren. Bieniusa Software Entwicklung 1 21/ 50
22 Ermitteln der Adresse 1 # include <stdio.h> 2 3 int main ( void ) { 4 int x = 7; 5 int *y = &x; 6 *y = 10; 7 return 0; 8 } $./a.out Die Adresse von x ist 0x7fff593e77c8 Der Wert von x ist 7 $./a.out Die Adresse von x ist 0x7fff5e7987c8 Der Wert von x ist 7 $./a.out Die Adresse von x ist 0x7fff596117c8 Der Wert von x ist 7 Bieniusa Software Entwicklung 1 22/ 50
23 Deklaration von Zeigern Der Typbezeichner für einen Zeiger auf einen Wert vom Typ t ist t*. int *a, * b; // a und b Zeiger auf int int *y, x ; // y Zeiger und x int int * f, g; // f Zeiger und g int!! Bieniusa Software Entwicklung 1 23/ 50
24 Zuweisung von Zeigern Der Adressoperator & liefert einen Zeiger; d.h. eine Adresse. int x = 42; // x ist ein Integer mit Wert 42 int * p = & x; // p ist ein Zeiger auf x Bieniusa Software Entwicklung 1 24/ 50
25 NULL Der Null-Zeiger ist ein spezieller Wert, der angibt, dass ein Zeiger nicht auf eine gültige Speicheradresse verweist. int * p1 = NULL ; // Null Pointer NULL ist eine Null-Pointer-Konstante. In C99 als Integer-Wert 0 implementiert. Der Adress-Operator & liefert niemals einen Null-Zeiger. Bieniusa Software Entwicklung 1 25/ 50
26 Frage Was ist der Unterschied zwischen einem Null-Zeiger und einem nicht initialisierten Zeiger? Bieniusa Software Entwicklung 1 26/ 50
27 Dereferenzieren von Zeigern Der Wert an Adresse y wird über den Indirektionsoperator *, z.b. *y, gelesen oder auch geschrieben. 1 # import <stdio.h> 2 3 int main ( void ) 4 { 5 int x = 7; 6 int *y = &x; 7 printf (" Die Adresse von x ist %p \n", y); 8 printf (" Der Wert von x ist %d \n", *y); 9 *y = 10; 10 printf (" Der Wert von x ist jetzt % d \ n", x); return 0; 13 } Hinweis: Ein Zeiger vom Typ void* verweist auf Daten unbekannten Typs und kann nicht dereferenziert werden. Bieniusa Software Entwicklung 1 27/ 50
28 Segmentation faults Das Derefenzieren eines Zeigers, der zuvor nicht mit einer gültigen Adresse initialisiert wurde, ist undefiniert. Gefahr: Beliebiger Zugriff auf (geschützten) Speicherbereich Oft: Abbruch mit Segmentation Fault Bieniusa Software Entwicklung 1 28/ 50
29 Parameterübergabe bei Funktionen: Call-by-value void swap1 ( int x, int y) { int temp ; temp = x; /* Speichere den Wert von x in temp */ x = y; /* Speichere den Wert von y in x */ y = temp ; /* Speichere den Wert von temp in xy */ } return ; Bieniusa Software Entwicklung 1 29/ 50
30 Swap der Speicherinhalte 1 # include <stdio.h> 2 # include < stdlib.h> 3 4 void swap2 ( int *x, int * y) 5 { 6 int temp = * x; /* Speichere den Wert an x in temp */ 7 * x = * y; /* Speichere den Wert an y an x */ 8 * y = temp ; /* Speichere den Wert von temp an y */ 9 } int main ( void ) { 12 int a = 86; 13 int b = 42; 14 printf (" Vor swap : a = %d, b = %d \n", a, b); 15 swap2 (&a, &b); 16 printf (" Nach swap : a = %d, b = %d \n", a, b); 17 return 0; 18 } Bieniusa Software Entwicklung 1 30/ 50
31 Funktionen mit mehreren Ergebnissen Beispiel scanf: int i, j; j = scanf ("%d", &i); Rückgabewert: Anzahl der Zeichen, die aus dem Eingabestrom gelesen wurden Ergebnisse des Einlesens wird über Zeiger zurückgegeben Bieniusa Software Entwicklung 1 31/ 50
32 Dynamische Speicherverwaltung Bieniusa Software Entwicklung 1 32/ 50
33 Klassifizierung von Speicherbereichen I Bieniusa Software Entwicklung 1 33/ 50
34 Klassifizierung von Speicherbereichen II Bieniusa Software Entwicklung 1 34/ 50
35 Klassifizierung von Speicherbereichen III Bieniusa Software Entwicklung 1 35/ 50
36 Klassifizierung von Speicherbereichen IV Bieniusa Software Entwicklung 1 36/ 50
37 Klassifizierung von Speicherbereichen V Bieniusa Software Entwicklung 1 37/ 50
38 Dynamische Speicherverwaltung Funktion void *malloc(size_t n) alloziert n Bytes auf dem Heap; liefert Zeiger auf den Beginn des alloziertes Speicherbereichs oder NULL Funktion void free(void *pointer) gibt Speicher wieder frei (verhindert Speicherlecks) Zugriff auf freigegebenen Speicher, mehrmaliges Freigeben des gleichen Speicherbereichs, Zugriff auf nicht-initialisierten Speicher... ist undefiniert! int *p = malloc (10 * sizeof ( int )); if (p == NULL ) {... /* Problembehandlung */ } else { /* Speicherbereich kann verwendet werden */... } /* Freigeben */ free (p); Bieniusa Software Entwicklung 1 38/ 50
39 sizeof - Operator sizeof liefert die jeweils notwendige Größe des Speicherbereichs in Byte Portierbarkeit von Programmen auf verschiedene Systeme 1 # include <stdio.h> 2 3 int main ( void ) { 4 printf (" char : %ld Byte \n", sizeof ( char )); 5 printf (" int : %ld Bytes \n", sizeof ( int )); 6 printf (" long : %ld Bytes \n", sizeof ( long int )); 7 printf (" float : %ld Bytes \n", sizeof ( float )); 8 printf (" double : %ld Bytes \n", sizeof ( double )); 9 return 0; 10 } Bieniusa Software Entwicklung 1 39/ 50
40 Zugriff auf Elemente im allozierten Speicherbereich int *p = malloc (3 * sizeof ( int )); *(p+0) = 1; *(p+1) = 3; *(p+2) = 7; Bieniusa Software Entwicklung 1 40/ 50
41 Arrays Zusammenfassen und Verwalten von verwandten Daten gleichen Typs unter einem Namen. Diese Daten sind angeordnet und können durch einen Index addressiert werden (0, 1,..., n 1). Allokation auf dem Stack: int a [6]; // Array mit Namen a mit 6 Integern int b [6] = {0,0,1,0,0,0}; // Deklaration und Initialisierung Allokation auf dem Heap: int * ar; ar = ( int *) malloc ( sizeof ( int ) * 10) ; if (ar == NULL ) { printf (" Nicht genug Speicher vorhanden."); // Fehler ausgeben exit (1) ; // Programm mit Fehlercode abbrechen } free ( ar); // gibt Speicher wieder frei Bieniusa Software Entwicklung 1 41/ 50
42 Initialisieren von Arrays Der Inhalt von Arrays muss vor dem ersten Lesezugriff initialisiert werden. for ( int i = 0; i < 6; i ++) { a[ i] = 2 * i; } Bieniusa Software Entwicklung 1 42/ 50
43 Zugriff außerhalb der Array-Grenzen /* Weiterfuehrung des Beispiels */ printf ("%d",a [ -1]) ; printf ("%d",a [6]) ; Verhalten ist undefiniert! Bieniusa Software Entwicklung 1 43/ 50
44 Adressarithmetik auf Arrays I Zwischen Arrays und Zeigern besteht in C ein enger Zusammenhang: Jede Operation mit Array-Indizes kann man auch mit Zeigern formulieren. Beispiel: a ist Array mit 6 int-elementen. Im Speicher realisiert als ein Block von 6 aufeinanderfolgenden Elementen. Deklariert man nun eine Variable pa als Zeiger auf einen int-wert: int *pa; dann kann pa auf das Element an Position 0 von a verweisen; pa = &a [0]; pa enthält die Adresse von a[0]. &a[0] ist äquivalent zu a. Bieniusa Software Entwicklung 1 44/ 50
45 Adressarithmetik auf Arrays II Die Zuweisung x = *pa; kopiert den Wert von a[0] nach x. Die Adresse des Elements a[i] ist gegeben durch pa + i; und *(pa + i) liefert den Wert des Elements a[i]. Bieniusa Software Entwicklung 1 45/ 50
46 Arrays sind keine Zeiger-Variablen! Arrays kann man keinen Wert zuweisen; einer Zeiger-Variablen kann man hingegen eine andere Speicheradresse zuweisen. Für Arrays kann man die Größe (in byte) über sizeof ermitteln. Bieniusa Software Entwicklung 1 46/ 50
47 Arrays als Parameter Wird ein Array als Parameter an eine Funktion übergeben, so wird tatsächlich die Adresse des Anfangselements, also ein Zeiger, übergeben. Wie viele Elemente sind in dem Array? Unbekannt! Mitverwalten eines weiteren Parameters mit der Größe Beispiel: Kommandozeilenparameter 1 # include <stdio.h> 2 3 int main ( int argc, char * argv []) 4 { 5 // Ausgabe der Kommandozeilenparameter 6 for ( int i = 0; i < argc ; i ++) { 7 printf (" argv [%d] = %s \n", i, argv [i]); 8 } 9 return 0; 10 } Bieniusa Software Entwicklung 1 47/ 50
48 Präzedenz von * Der Ausdruck *(pa + 1) liefert Bieniusa Software Entwicklung 1 48/ 50
49 Präzedenz von * Der Ausdruck *(pa + 1) liefert den Wert an Adresse pa mit Abstand 1. Der Ausdruck *pa + 1 liefert Bieniusa Software Entwicklung 1 48/ 50
50 Präzedenz von * Der Ausdruck *(pa + 1) liefert den Wert an Adresse pa mit Abstand 1. Der Ausdruck *pa + 1 liefert den Wert an Adresse pa und addiert zu diesem Wert 1. Bieniusa Software Entwicklung 1 48/ 50
51 Variante: calloc Die Variante void *calloc(size_t n, size_t elementsize) alloziert einen Speicherbereich der Größe n elementsize und initialisert ihn mit 0. /* Speicherplatz fuer 200 chars */ char *w = calloc (200, sizeof ( char )); /* Speicherplatz fuer 10 int */ int *p = calloc (10, sizeof ( int )); Bieniusa Software Entwicklung 1 49/ 50
52 Variante: realloc Die Funktion void *realloc(void *pointer, size_t size) erlaubt es, die Größe von Speicherbereichen zu erweitern bzw. zu verkleinern. int *p = ( int *) malloc ( initial_size );... void * tmp = realloc (p, bigger_ size ); if ( tmp!= NULL ) { p = tmp ; /* OK */ } else { /* Problembehandlung */... } Bieniusa Software Entwicklung 1 50/ 50
Funktionen, 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
MehrEinführung in die Programmiersprache C Software Entwicklung 1
Einführung in die Programmiersprache C Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller Dieses Skript gibt nur einen kleinen Einblick in C. Für eine ausführlichere und vertiefte Darstellung
MehrEinführung in die Programmiersprache C Software Entwicklung 1
Einführung in die Programmiersprache C Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller Im TIOBE Index (https://www.tiobe.com/tiobe-index/) wurde C zur Programmiersprache des Jahres
MehrEinführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz
Patrick Schulz patrick.schulz@paec-media.de 29.04.2013 1 Einführung Einführung 2 3 4 Quellen 1 Einführung Einführung 2 3 4 Quellen Hello World in Java Einführung 1 public class hello_ world 2 { 3 public
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)
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa Peter Zeller AG Softech FB Informatik TU Kaiserslautern Speichermanagement Wie viel Speicher braucht ein Programm? Wofür wird Speicher benötigt? Wie ist der Speicher
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
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
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
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
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)
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
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
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
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
Funktionen, Header-Dateien, Pointer Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn 1 Organisatorische Bemerkungen 2 Modul Programmierung Pflichtmodul für BSc INF
MehrPraxis der Programmierung
Arrays, Pointer, Parameterbergabe Institut für Informatik und Computational Science Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Arrays (Felder/Vectoren) 2 Arrays: Motivation Gegeben:
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
MehrZeiger (engl. Pointer)
Zeiger (engl. Pointer) Zeiger Ein Zeiger (engl. Pointer) speichert eine Adresse, unter der ein Wert im Speicher des Computers gespeichert werden kann. Eine Variable im Gegensatz speichert einen Wert. Der
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
MehrTeil 5: Felder, Zeiger, Zeigerarithmetik Gliederung
Teil 5: Felder, Zeiger, Zeigerarithmetik Gliederung Felder (Arrays) Mehrdimensionale Felder Zeiger und Adressen Zeigerarithmetik Felder Mehrdimensionale Felder Zeiger und Adressen Zeigerarithmetik Felder
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
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:
MehrEinführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin
Fakutltät IV Technische Universität Berlin 5. Mai 2014 Inhaltsverzeichnis 1 2 3 4 5 6 7 Überblick Beispielprogramm in Java Beispielprogramm in C 1 2 3 4 5 6 7 Beispielprogramm in Java Beispielprogramm
MehrArrays (Felder/Vektoren)
Arrays (Felder/Vektoren) Zusammenfassung mehrerer Variablen des gleichen Typs unter einem Namen im Speicher direkt hintereinander abgelegt Definition: Typname Arrayname [Größe]; Beispiel: int ar [5]; Zugriff
MehrAdvanced Programming in C
Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer
MehrLösungshinweise/-vorschläge zum Übungsblatt 12: 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 12: Software-Entwicklung 1 (WS 2017/18)
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!
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
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
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
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
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
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
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...............................
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
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
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.
MehrEinführung in die Programmiersprache C
Einführung in die Programmiersprache C 3 Typen und Speicherverwaltung Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Literatur (2) Kernighan and Ritchie, The
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
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
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
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
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
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)
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,
MehrSpeichermanagement Software Entwicklung 1
Speichermanagement Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller Speicher ist eine wichtige Ressource für Softwaresysteme. Viele nicht-funktionale Eigenschaften hängen vom angemessenen
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
MehrEinführung in C. EDV1-04C-Einführung 1
Einführung in C 1 Helmut Erlenkötter C Programmieren von Anfang an Rowohlt Taschenbuch Verlag ISBN 3-4993 499-60074-9 19,90 DM http://www.erlenkoetter.de Walter Herglotz Das Einsteigerseminar C++ bhv Verlags
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
MehrUnterlagen. CPP-Uebungen-08/
Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen
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
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:
MehrEinführung in den Einsatz von Objekt-Orientierung mit C++ I
Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen
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
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
MehrEinführung Pointer. C-Kurs 2013, 2. Vorlesung. Nico Andy
Einführung Pointer C-Kurs 2013, 2. Vorlesung Nico nico@freitagsrunde.org Andy andrew@freitagsrunde.org http://wiki.freitagsrunde.org 10. September 2013 This work is licensed under the Creative Commons
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
MehrProbeklausur Name: (c)
Einführung in die Praktische Informatik 30.1.2013 Probeklausur Name: Teil I: Datentypen (20 Punkte) Lösen sie die Probleme, indem sie die korrekten Lösungen ankreuzen bzw. in die vorgesehenen Freiräume
MehrProgrammiersprachen Einführung in C
Programmiersprachen Einführung in C Teil 2: Prof. Dr. Unser erstes C-Programm int main (int argc, char *argv[]) int i; int sum = 0; for (i = 0; i
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
MehrSpeichermanagement Software Entwicklung 1
Speichermanagement Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller Speicher ist eine wichtige Ressource für Softwaresysteme. Viele nicht-funktionale Eigenschaften hängen vom angemessenen
MehrTeil 6: Strukturen und Unionen Gliederung
Teil 6: Strukturen und Unionen Gliederung Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Strukturen 6.2 Strukturen Ursprung in Pascal als Datentyp record, Verbunddatentyp Strukturtyp
Mehr4.2 Programmiersprache C
4.2.1. Elementare Datentypen (signed) int, unsigned int, (signed) short (int), unsigned short (int), (signed) long (int), unsigned long (int) Elementare Datentypen für ganze Zahlen mit oder ohne Vorzeichen.
MehrInformatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5
Informatik 1 (251-0832-00) D-MAVT F2010 Schleifen, Felder Nachbesprechung Blatt 3 Aufgabe 1 ASCII... A > a Vorsicht: Lösen Sie sich von intuitiven Schlussfolgerungen. A ist nicht grösser als a, denn in
MehrDynamische Datentypen
Dynamische Datentypen Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel
MehrGrundlagen der OO- Programmierung in C#
Grundlagen der OO- Programmierung in C# Technische Grundlagen 1 Dr. Beatrice Amrhein Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung 2 Visual Studio 3
MehrINE1 Arrays, Zeiger, Datenstrukturen
INE1 Arrays, Zeiger, Datenstrukturen Arrays Felder von Elementen gleichen Typs Verwenden von Adressen: Zeiger Datenstrukturen mit struct Zeiger auf Datenstrukturen Spezielle Zeiger und komplexe Deklarationen
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
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++ Teil 6. Sven Groß. 23. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 15
C++ Teil 6 Sven Groß 23. Nov 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 23. Nov 2015 1 / 15 Themen der letzten Vorlesung const-deklaration Referenzen Zeiger Felder Sven Groß (IGPM, RWTH Aachen) C++
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:
MehrComputergrundlagen Programmieren in C
Die Compilersprache C Computergrundlagen Programmieren in C Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 Geschichte D. M. Ritchie, *1941 1971-73: Entwickelt von
MehrTeil 6: Strukturen und Unionen Gliederung
Teil 6: Strukturen und Unionen Gliederung Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Strukturen 6.2 Strukturen Typdefinitionen
MehrArrays 115. array-qualifier static restrict const volatile array-size-expression assignment-expression * simple-declarator identifier
Arrays 115 direct-declarator simple-declarator ( simple-declarator ) function-declarator array-declarator array-declarator direct-declarator [ [ array-qualifier-list ] [ array-size-expression ] ] array-qualifier-list
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Funktionen Rückblick Operatoren logische Verknüpfungen Zusammengesetzte Operatoren ( Zuweisungsoperatoren ) Kontrollstrukturen Bedingte Anweisungen (if-abfrage, switch-konstrukt)
MehrU3 3. Übung U3 3. Übung. Systemnahe Programmierung in C Übungen Moritz Strübe Universität Erlangen-Nürnberg Informatik 4, 2009 U3.fm
U3 3. Übung U3 3. Übung Besprechung Aufgabe 1 Pointer Register und Ports U3.1 U3-1 Zeiger U3-1 Zeiger 1 Einordnung Konstante: a 0110 0001 Variable: a Zeiger-Variable (Pointer): a char *p = &a; p U3.2 2
MehrBesprechung Aufgabe 1. Pointer. Register und Ports. SPiC - Ü U3.1
U3 3. Übung U3 3. Übung Besprechung Aufgabe 1 Pointer Register und Ports U3.1 U3-1 Zeiger U3-1 Zeiger 1 Einordnung Konstante: a 0110 0001 Variable: a Zeiger-Variable (Pointer): a char *p = &a; p U3.2 2
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
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)
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,
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
MehrFunktionen. mehrfach benötigte Programmteile nur einmal zu schreiben und mehrfach aufzurufen
Funktionen Funktionen erlauben, dem Programmcode hierarchisch zu strukturieren ein Hauptprogramm steuert dabei die Abfolge von Schritten, die einzelnen Schritte können durch Funktionen realisiert werden
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
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.
MehrESP Tutorium. Studienassistent: Ewald Moitzi. Gruppe 1
ESP Tutorium Studienassistent: Ewald Moitzi E-Mail: prog-tutor-ewald@iicm.tugraz.at Gruppe 1 Finde den Fehler 1 char text[5]; strcpy (text, "hallo"); printf ("%s\n",text); Finde den Fehler 1 char text[5];
MehrZeiger vom Typ void* benötigen weniger Speicher als andere Zeiger, da bei anderen Zeigertypen zusätzlich die Größe gespeichert werden muss.
EZS-Test Fragen zur Programmiersprache C Fragen entnommen aus SPiC 1 1. Ein Hauptprogramm und eine Interruptbehandlung greifen nebenläufig auf die Variable uint16_t foo zu. Das Hauptprogramm verwendet
MehrÜbungen zu Systemprogrammierung 1
Übungen zu Systemprogrammierung 1 Ü1-2 Speicherverwaltung Sommersemester 2018 Christian Eichler, Jürgen Kleinöder Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl
MehrProgrammiertechnik 1. Unit 9: Programmiersprache C Zeiger und Felder. Andreas Polze 1
Programmiertechnik 1 Unit 9: Programmiersprache C Zeiger und Felder Andreas Polze 1 Ablauf Heap und Stack Zeiger und Adressen Zeiger und Funktionen (-argumente) Zeiger und Arrays Adreßarithmetik Beispiel:
MehrKurzeinführung in C/C++ Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Einleitung
Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ 1 Einleitung Vorteile von Java: gut strukturiert mit hohem Funktionsumfang (mächtige Standardbibliothek) weitestgehend
MehrÜbung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil
MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches
MehrRepetitorium Programmieren I + II
Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case
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:
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
MehrFelder (Arrays) und Zeiger (Pointers) - Teil I
Felder (Arrays) und Zeiger (Pointers) - Teil I Felder: Motivation Wir können jetzt über Zahlen iterieren: for (int i=0; i
Mehr