8. Referenzen und Zeiger
|
|
- Kristian Martin
- vor 7 Jahren
- Abrufe
Transkript
1 8. Referenzen und Zeiger
2 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 nennt man auch Adressen Derzeit sind 32-Bit Adressen üblich: Beispiele (hexadezimale Schreibweise): A1F2C73A Diese hexadezimalen Adressen stellen einen besonderen Datentyp dar, der in speziellen Variablen gespeichert wird: Zeigervariable Dr. Norbert Spangler / Grundlagen der Informatik
3 Beispielprogramm void main() { int i=123; // Variable i int *zeiger_i=&i; //Zeigervariable auf i cout<<" i zeiger_i"<<endl; cout<<setw(8)<<i<<" "<<zeiger_i<<endl; cout<<&i<<" "<<&zeiger_i<<endl; } Dr. Norbert Spangler / Grundlagen der Informatik
4 Variable i Übersicht Variable zeiger_i Wert/Inhalt von zeiger_i Wert/Inhalt von i 0012FF Name i Name zeiger_i Adresse der Variablen 0012FF60 Adresse der Variablen 0012FF54 Wert/Inhalt 123 Wert/Inhalt 0012FF Normalerweise spielen die Werte der Adressen keine Rolle Dr. Norbert Spangler / Grundlagen der Informatik
5 Begriffe Zeiger Ein Zeiger(Pointer) ist ein Ausdruck, dessen Wert die Adresse und den Typ eines anderen Objekts darstellt. Adresse Eine Adresse beschreibt die Position eines Bytes im Speicher mit 32 Bits. Sie wird üblicherweise hexadezimal angegeben mit 8 Hexadezimalziffern. Adressoperator & (unärer Operator) Ist x ein Objekt, so bezeichnet &x die (logische) Speicheradresse des Objekts. Die echte physikalische Hauptspeicheradresse wird durch das Betriebssystem ermittelt. Zeigervariable Variablen zur Speicherung von Zeigern sind Zeigervariable (manchmal werden sie auch nur Zeiger/Pointer genannt). Dr. Norbert Spangler / Grundlagen der Informatik
6 8.1 Zeiger Zeiger Ein Zeiger(Pointer) ist ein Ausdruck, dessen Wert die Adresse und den Typ eines anderen Objekts darstellt. Sprechweise: Zeiger auf int oder auch int-zeiger usw. Zum Zeiger gehört also nicht nur die Speicheradresse sondern auch der dazugehörige Typ. Damit kennt man auch die Anzahl der Bytes, welche ein an dieser Adresse gespeichertes Objekt belegt. Zeigervariable Variablen zur Speicherung von Zeigern sind Zeigervariable (manchmal werden sie auch nur Zeiger/Pointer genannt). Die gespeicherten Adressen können geändert werden. Jede Zeigervariable belegt 4 Bytes (=32 Bits) Dr. Norbert Spangler / Grundlagen der Informatik
7 Deklaration Deklaration von Zeigervariablen Zur Deklaration von Zeigervariablen ist in der Typdeklaration ein * vor dem Namen anzugeben. Eine Zeigervariable kann immer nur Adressen von Objekten des eines Typs zeigen. Beispiel: int *zeiger_i;// Typ Zeiger auf int oder auch int* char *temp;//typ Zeiger auf char oder auch char* Folgende Befehle sind damit möglich: int i=0; char c= ; zeiger_i=&i; temp=&c; zeiger_i=&c; //ergibt Fehlermeldung temp=zeiger_i; //ergibt Fehlermeldung Dr. Norbert Spangler / Grundlagen der Informatik
8 Initialisierung Zeigervariable sollten üblicherweise immer initialisiert werden. Beispiel: int i=0, *zeiger_i=&i;//in einer Deklaration moeglich Sind keine sinnvollen Anfangsadressen bekannt, sollten Zeigervariable mit der Speicheradresse 0 belegt werden. Die Verwendung dieser Adressse erzeugt immer eine Fehlermeldung. Anstelle der Ziffer 0 sollte besser die benannte Konstante NULL verwendet werden. char *temp1=null, *temp2=0; Dr. Norbert Spangler / Grundlagen der Informatik
9 Initialisierung # include <iostream> using namespace std; void main() { int *ptr1, *ptr2=null; cout << ptr1 << endl; cout << ptr2 << endl; if ( ptr1==null ) cout << " Zeiger 1 ist NULL" << endl; else cout << " Zeiger 1 ist nicht NULL"<< endl; if ( ptr2==null ) cout << " Zeiger 2 ist NULL"<< endl; else cout << " Zeiger 2 ist nicht NULL"<< endl; } Dr. Norbert Spangler / Grundlagen der Informatik
10 Zugriffe auf Objekte Mittels des Verweisoperators * ist es möglich, das Objekt anzusprechen, auf das ein Zeiger verweist. int i=123, zeiger_i=&i,b; b=*zeiger_i + 7; //entspricht b=i+7; Dann ist *zeiger_i die ganze Zahl 123 und b hat den Wert 130. Der Verweisoperator * hat eine hohe Vorrangstufe. Dr. Norbert Spangler / Grundlagen der Informatik
11 Zusammenfassung Variable Zeigervariable Adresse von i i zeiger_i &i Adresse der Zeigervariablen &zeiger_i (irrelevant) Wert von i *zeiger_i (=123 im Beispiel) Wert von zeiger_i &i Dr. Norbert Spangler / Grundlagen der Informatik
12 Fragen Frage 1: Was ist **zeiger, ***zeiger usw. zeiger *zeiger **zeiger macht nur Sinn, wenn an der Adresse, auf die Zeiger verweist, wieder eine Adresse gespeichert ist usw. -> schwer nachvollziehbar Dr. Norbert Spangler / Grundlagen der Informatik
13 8.2 Rechnen mit Zeigern Ausdruck: zeiger_i + 1 Adresse + 1 ergibt die nächste Adresse Da es sich hier um Adressen von int-objekten handelt ist es die Adresse des nächsten int-objekts (analog für andere Typen), welche damit um 4 höher ist als die in zeiger_i gespeicherte Adresse!!!!! void main() { int i=123,*zeiger_i=&i; cout<<"zeiger_i "<<zeiger_i<<endl; cout<<"zeiger_i+1 "<<zeiger_i+1<<endl; } Dr. Norbert Spangler / Grundlagen der Informatik
14 Rechnen mit Zeigern/Allgemein zeiger + 1 ergibt die nächste Adresse eines Elements vom selben Typ zeiger + 2 analog zeiger + i ergibt mit einem int i das i-te Element vom selben Typ Damit entspricht dies einem Array Der Wert dieses i-ten Elements erhält man mittels *(zeiger+i) Alternative Schreibweise zeiger[i] Dies entspricht einem Array mit dem Namen der Zeigervariablen Umkehrung: Der Name eines Arrays entspricht einer Zeigervariablen, die aber nicht geändert werden kann, also einem const-zeiger. Dr. Norbert Spangler / Grundlagen der Informatik
15 Zeiger und Arrays/Beispiel # include <iostream> using namespace std; void main() { // Deklarationen int j=5,name[10]={9,8,7,6,5,4,3,2,1,0}, *zeiger=&name[0]; cout << "Arrayname " << name << " Zeiger " <<zeiger<< endl; cout << name[j] << " " << *(name+j) << " " << *(zeiger+j) << " " << zeiger[j]<<endl; cout << &name[j] << " " << name+j << " " << zeiger+j << " " << &(zeiger[j]) << endl; } Dr. Norbert Spangler / Grundlagen der Informatik
16 Zeiger und Arrays &name[j] name+j sind gleichwertig (Adressen) name[j] *(name+j) sind gleichwertig (Werte) &zeiger[j] zeiger+j sind gleichwertig (Adressen) zeiger[j] *(zeiger+j) sind gleichwertig (Werte) Dr. Norbert Spangler / Grundlagen der Informatik
17 8.3 Referenzen Eine Referenz ist ein anderer Name (Alias) für ein bereits existierendes Objekt. Damit wird kein neuer Speicherplatz reserviert. Beispiel: int i=123, &k=i; Damit bezeichnen k und i dasselbe Objekt. i 123 k Dr. Norbert Spangler / Grundlagen der Informatik
18 Beispiel void main() { int i=123,&k=i; cout<<k++<<endl<<i<<endl<<&i<<endl<<&k<<endl; } Dr. Norbert Spangler / Grundlagen der Informatik
19 Deklaration Referenzen werden mit dem Zeichen & definiert. Dies ist dem Namen voranzustellen. Beispiel int i=123,&k=i; Allgemeine typ name1, &name2=name1,... Referenzen müssen bei der Definition initialisiert werden. Referenzen sind danach nicht mehr änderbar, zeigen also immer auf denselben Speicherplatz. Im Gegensatz zu Zeigervariablen sind sie damit nicht änderbar. Referenzen werden eigentlich nur bei der Parameterübergabe von Funktionen verwendet, wenn Parameter geändert werden sollen, was bei Call by Value nicht möglich ist Dr. Norbert Spangler / Grundlagen der Informatik
20 Call by Reference: Beispiel // Funktionsaufruf/Variablentausch Referenzparameter #include <iostream> using namespace std; void main() { int a=2,b=3; void tausch (int &,int &); // Parameter jetzt als Referenz cout << " programm anfang a " << a << " b " << b << endl; tausch(a,b); cout << " programm ende a " << a << " b " << b << endl; } void tausch (int &i1,int &i2) // Parameter jetzt als Referenz { int h; cout << " tausch anfang i1 " << i1 << " i2 " << i2 << endl; h=i1; i1=i2; i2=h; cout << " tausch ende i1 " << i1 << " i2 " << i2 << endl; } Dr. Norbert Spangler / Grundlagen der Informatik
21 Call by Reference: Beispiel Die Parameter i1 und i2 werden als Referenz festgelegt, d.h. die lokalen Variablen sind eine Referenz (Aliasname, aber dieselbe Adresse!!!!) zu den Parametern im Aufruf (a,b). Damit werden die Werte an den Adressen des aufrufenden Programmteils vertauscht!!!!! Die lokalen Variablen sind Referenzen der Variablen des aufrufenden Programms. -> Call by Reference Achtung : Ausdrücke/Konstante sind damit auf Parameterposition verboten also tausche (a+3,b) geht dann nicht/macht keinen Sinn; Dr. Norbert Spangler / Grundlagen der Informatik
22 Prototyp Definition Aufruf Referenzen als Parameter von Funktionen typfunktion name(,typparameter&, ); typfunktion name(,typparameter& namep, ) name(,v, ) //mit einer Variablen v Steht auf Parameterposition eine Referenz,so wird diese Variable mit Call by Referenz übergeben. Die lokale Variable in der Funktion wird eine Referenz des aktuellen Parameters. Das Objekt kann damit verändert werden. Call by Reference hat folgende Vorteile Die Parameter werden nicht kopiert -> keine Speicherplatzverdoppelung Es können mehrere Parameter in der Funktion geändert werden, d.h. es kann mehrere Ergebnisse geben. Aber: Ausdrücke auf Parameterposition sind nicht erlaubt. Dr. Norbert Spangler / Grundlagen der Informatik
23 8.4 Verwendung von Zeigern Zeiger werden eingesetzt, um Adressen in Funktionen bekannt machen, damit die dort stehenden Werte geändert werden können (analog zu Call by Reference) Dynamisch neue Objekte in beliebiger Anzahl zu erzeugen. Objekte miteinander zu verlinken Dr. Norbert Spangler / Grundlagen der Informatik
24 Zeiger als Parameter von Funktionen/Beispiel // Funktionsaufruf/Variablentausch - Zeigerparameter #include <iostream> using namespace std; void main() { int a=2,b=3; void tausch (int *,int *); cout << " programm anfang a " << a << " b " << b << endl; tausch(&a,&b);// was ergibt sich bei tausch(a,b) cout << " programm ende a " << a << " b " << b << endl; } void tausch (int *i1,int *i2) { int h=*i1; // Was ergibt sich bei int h=i1? *i1=*i2; *i2=h; } Dr. Norbert Spangler / Grundlagen der Informatik
25 Zeiger als Parameter von Funktionen Es hat geklappt. Dr. Norbert Spangler / Grundlagen der Informatik
26 Prototyp Definition Aufruf Zeiger als Parameter von Funktionen typfunktion name(,typparameter*, ); typfunktion name(,typparameter* namep, ) name(,ptr, ) //mit einer zeigervariablen ptr oder name(,&v, )//mit dem Wert einer Zeigervariablen Steht auf Parameterposition eine Zeigervariable,so wird diese Variable mit Call by Value übergeben.der Wert (=die Adresse eines Objekts in der aufrufenden Funktion) wird in eine lokale Zeigervariable kopiert und ist in der Funktion damit bekannt. Das Objekt kann damit verändert werden.. Dies entspricht im Prinzip genau der Technik Call by Reference. Daher: Als Parameter von Funktionen haben Zeigervariable gegenüber Referenzen keine Vorteile. Dr. Norbert Spangler / Grundlagen der Informatik
27 Dynamische Objekte Bisher mussten Daten vor ihrer Verwendung immer deklariert werden, wobei speziell bei Arrays die Anzahl der Elemente zur Compile-Zeit schon bekannt sein musste (Vorgabe durch Konstanten). Dies ist in der Realität nicht immer durchführbar. Daher gibt es eine Möglichkeit, zur Laufzeit des dynamisch Speicherplatz zu reservieren und auch wieder freizugeben. Hierfür gibt es die Operatoren new und delete. Dr. Norbert Spangler / Grundlagen der Informatik
28 Dynamische Objekte Der Operator new erwartet als Argument den Typ des anzulegenden Objekts und liefert als Ergebnis dessen Adresse: typ1 *name1 = new typ1(anfangswert); //neue Variable typ2 *name2 = new typ2[n]; //Array: n darf eine int-variable sein!! bzw. typ1 *name1; typ2 *name2; name1 = new typ1(anfangswert); //neue Variable name2 = new typ2[n]; //Array: n darf eine int-variable sein!! Damit lassen sich Arrays mit beliebiger Länge erzeugen. Der operator delete löscht mit new angelegte Objekte delete name1; //loescht Variable delete[]name2; //loescht Array Dr. Norbert Spangler / Grundlagen der Informatik
29 Dynamische Objekte/Beispiel int n; double *ptr_d, *ptr_a; ptr_d = new double; cin>>n; ptr_a = new double [n]; cin>>ptr_a[j]; delete ptr_d; delete []ptr_a; 2 Zeiger auf double Eine neue Variable vom Typ double wird erzeugt. Sie hat keinen Namen. Ihre Adresse steht in ptr_d; Eine neues Array vom Typ double wird erzeugt. Es hat n Elemente. Der Name des Arrays ist ptr_a Mit new erzeugte Objekte können mit delete wieder gelöscht werden. Dr. Norbert Spangler / Grundlagen der Informatik
30 Anfangszeiger Adresse 1. Objekt Verlinkung von Objekten Objekt 1 Daten Objekt 1 Adresse nächstes Objekt Daten Objekt 2 Objekt 2 Adresse nächstes Objekt Letztes Objekt Daten letztes Objekt NULL Später genauer bei Strukturen Dr. Norbert Spangler / Grundlagen der Informatik
C++ 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
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
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
MehrInhalt. 4.5 Arbeit mit Zeigern (engl. Pointer)
Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Steuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Zeigern
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
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
MehrFunktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang
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
MehrUnterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur
Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert
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
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
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
MehrPass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl
Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18
Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.
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
MehrC++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14
C++ Teil 6 Sven Groß 27. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 27. Mai 2016 1 / 14 Themen der letzten Vorlesung Musterlösung A2 Wdh.: Zeiger und Felder Kopieren von Feldern Dynamische Speicherverwaltung
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.
MehrEinstieg in die Informatik mit Java
1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern
MehrProgrammieren in C. Zeiger und Zeichenketten. Prof. Dr. Nikolaus Wulff
Programmieren in C Zeiger und Zeichenketten Prof. Dr. Nikolaus Wulff Zeiger Variablen benötigen zur Laufzeit einen bestimmten Speicherplatz. Die Größe des Bedarfs richtet sich nach dem Typ der Variablen,
MehrÜbungen zur Vorlesung EidP (WS 2015/16) Blatt 6
Andre Droschinsky Ingo Schulz Dortmund, den 0. Dezember 2015 Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6 Block rot Es können 4 + 1 Punkte erreicht werden. Abgabedatum: 10. Dezember 2015 2:59 Uhr Hinweise
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Funktionen Rückblick Operatoren logische Verknüpfungen Zusammengesetzte Operatoren ( Zuweisungsoperatoren ) Kontrollstrukturen Bedingte Anweisungen (if-abfrage, switch-konstrukt)
MehrKapitel 6: Dynamische Speicherverwaltung
Kapitel 6: Dynamische Speicherverwaltung Dieses Kapitel beschreibt die Operatoren new und delete, mit denen dynamisch Speicher reserviert und freigegeben wird. Außerdem wird im Detail eingegangen auf:
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
MehrKap 9. Bitoperationen und -strukturen
Kap 9. Bitoperationen und -strukturen 9.1 Anwendung von Bits Im Gegensatz zu den üblicherweise Byte-orientierten Daten gibt es auch Bit-Anwendungsbeispiele Statusanzeigen bei Ein-/Ausgabe (Stream-Klassen)
MehrProgrammieren in C/C++ und MATLAB
Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 5-1 Übung Schreiben Sie ein Programm, das die Zahl π durch π = 4 4 4 4 4 4 + + +... 3 5 7 9 11
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
MehrNachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.
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: ( / 25 Pkt.) Gegeben ist das folgende
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Variablen Übersicht 1 Variablendeklaration 2 Initialisierung von Variablen 3 Symbolische Konstanten Variablendeklaration Die Deklaration der Variablen erfolgt durch eine Typangabe
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2010/11 arithmetik für dynamischen Speicher Anwendungen Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU
MehrWertebereich und Genauigkeit der Zahlendarstellung
Wertebereich und Genauigkeit der Zahlendarstellung Sowohl F als auch C kennen bei ganzen und Floating Point-Zahlen Datentypen verschiedener Genauigkeit. Bei ganzen Zahlen, die stets exakt dargestellt werden
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
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
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.
Mehr8. Funktionen mit Arrays
8. Funktionen mit Arrays Motivation Call by Value als Übergabetechnik kommt nur bei einfachen Variablen zum Einsatz. Das Anlegen von "Kopien" ist da akzeptabel. Bei Arrays ist es dagegenweniger sinnvoll,
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
MehrDAP2 Praktikum Blatt 1
Fakultät für Informatik Lehrstuhl 11 / Algorithm Engineering Prof. Dr. Petra Mutzel, Carsten Gutwenger Sommersemester 2009 DAP2 Praktikum Blatt 1 Ausgabe: 21. April Abgabe: 22. 24. April Kurzaufgabe 1.1
MehrRO-Tutorien 3 / 6 / 12
RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 2 AM 06./07.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft
MehrVorkurs Informatik: Erste Schritte der Programmierung mit C++
Vorkurs Informatik WS 14/15 Vorkurs Informatik: Erste Schritte der Programmierung mit C++ Arne Nägel, Andreas Vogel, Gabriel Wittum Lehrstuhl Modellierung und Simulation Goethe-Center for Scientific Computing
MehrProzeduren und Funktionen
OSZ Handel I - Gymnasiale Oberstufe (Abt. V) In Anlehnung an: Duden Informatik (3.Auflage, Dudenverlag, 2001, S. 477). Prozeduren und Funktionen Fach: Informatik Parameter sind Platzhalter in einer Prozedur
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
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
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
MehrSpeicherklassen (1) Lokale Variablen
Speicherklassen (1) Lokale Variablen Lokale Variablen beschränken sich auf die Funktionen, in denen sie definiert werden Sind in der Funktion gekapselt können also nur in der Funktion verändert werden
MehrObjektorientiertes Programmieren für Ingenieure
Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen
MehrMethoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only
Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer
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)
MehrC++ - Einführung in die Programmiersprache Funktionen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Funktionen Leibniz Universität IT Services Anja Aue Subroutine (Unterprogramm) Lösung von Teilen einer Gesamtaufgabe. Kapselung von Anweisungen, die zu einer
Mehr5. Abgeleitete Datentypen
5. Abgeleitete Datentypen Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Felder (Arrays)!Zeichenketten (Strings)!Strukturen (Structs) Copyright: M. Gross, ETHZ, 2003 2 Arrays! Ein Array ist
Mehr18. Bitmanipulationen. Bitoperationen Bitmasken
18. Bitmanipulationen Bitoperationen Bitmasken Anwendung von Bits Statusanzeigen bei Ein-/Ausgabe (Stream-Klassen) Zugriffsrechte auf Dateien Maschinensteuerung/Gerätetreiber Status-/Steuerungsangaben
Mehr3. Semester : 1. Prüfung
3. Semester : 1. Prüfung Name : Die gesamte Prüfung bezieht sich auf die!! Prüfungsdauer: 90 Minuten mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter geschrieben werden
MehrEinführung in die Programmierung Wintersemester 2016/17
Einführung in die Programmierung Wintersemester 2016/17 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Gültigkeitsbereiche Inhalt Lokale und globale
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,
MehrTag 4 Repetitorium Informatik (Java)
Tag 4 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2016/2017 Willkommen zum Informatik-Repetitorium!
MehrProgrammieren in C++ Arrays, Strings und Zeigerarithmetik
Programmieren in C++ Arrays, Strings und Zeigerarithmetik Inhalt Eindimensionale C-Arrays C-Strings und Strings (Mehrdimensionale C-Arrays) Arrays und Vektoren (C++) Unique Pointers (C++11) Zeigerarithmetik
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte
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; {
MehrWas Mathematiker schon vor Jahrhunderten erfunden haben, gibt es jetzt endlich in ihrer Programmiersprache:
Kapitel 8 Operatoren Was Mathematiker schon vor Jahrhunderten erfunden haben, gibt es jetzt endlich in ihrer Programmiersprache: Operatoren definieren Es ist in C++ möglich, Operatoren wie +, oder für
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.
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!
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
MehrÜberladen von Operatoren
- Überladen des Indexoperators [] - Überladen des Ausgabeoperators > Programmieren in C++ Informatik FH Trier C++12-1 ähnlich dem Überladen von Funktionen Überladen
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
MehrAssoziative Container in C++ Christian Poulter
Assoziative Container in C++ Christian Poulter Seminar: Die Sprache C++ Mat-Nr.: 53 03 129 EMail: inf@poulter.de Christian Poulter Assoziative Container in C++ Seite 1/10 Inhalt 1. Einleitung: Container...
MehrDie Programmiersprache C Eine Einführung
Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert
MehrBeispiel. Problem: mehrteilige Nachnamen (von Goethe, Mac Donald, Di Caprio)
Beispiel Beispiel: Namensliste konvertieren (Karl Egon Meier Meier, Karl Egon). s/(.*) (.*)/$2, $1/; Problem: mehrteilige Nachnamen (von Goethe, Mac Donald, Di Caprio) s/(.*) (.*)/$2, $1/; s/(.*) ([a-z]+
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
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
Mehr5.4 Klassen und Objekte
5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen
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
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
MehrKapitel 3: Variablen
Kapitel 3: Variablen Thema: Programmieren Seite: 1 Kapitel 3: Variablen Im letzten Kapitel haben wir gelernt, bestimmte Ereignisse zu wiederholen solange eine Bedingung erfüllt ist. Nun möchten wir aber
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 23
Kapitel 16 Datei Aus- und Eingabe Seite 1 von 23 Datei Aus- und Eingabe - Für die Ausgabe auf Dateien und die Eingabe von Dateien werden die Streams ofstream und ifstream verwendet. - Sie sind in der Bibliothek
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
MehrZiel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind
Templates und Containerklassen Ziel, Inhalt Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen 1 Ziel, Inhalt
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
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
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
MehrDie Programmiersprache C99: Zusammenfassung
Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2010/11 Lokale und globale Variablen Namensräume Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund
MehrC- Kurs 09 Dynamische Datenstrukturen
C- Kurs 09 Dynamische Datenstrukturen Dipl.- Inf. Jörn Hoffmann jhoffmann@informaak.uni- leipzig.de Universität Leipzig InsAtut für InformaAk Technische InformaAk Flexible Datenstrukturen Institut für
MehrKap 09. Funktionen/Ergänzungen
Kap 09. Funktionen/Ergänzungen 9.1 Inline-Funktionen Der Mechanismus der Parameterübergabe hat einen "hohen" organisatorischen Aufwand z.b. durch kopieren der Parameteretc. Ist die Funktion vergleichsweise
MehrEinstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden
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
MehrAlgorithmen und Programmierung II
Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung
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
MehrVerschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes
Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16
Kapitel 5 Arithmetische Operatoren Seite 1 von 16 Arithmetische Operatoren - Man unterscheidet unäre und binäre Operatoren. - Je nachdem, ob sie auf einen Operanden wirken, oder eine Verknüpfung zweier
MehrAuswahlen (Selektionen)
1 Anhang 10.3 Ein/Ausgaben Eingabe mit Prompt (Beispiel) cout ; // Prompt ohne endl cin
MehrC++ Programmierung. Uwe Naumann. LuFG Informatik 12, RWTH Aachen University, Germany
C++ Programmierung Uwe Naumann LuFG Informatik 12, RWTH Aachen University, Germany Leave me alone world... Hauptprogramm int main(); return 0; Ausgabe auf Bildschrim #include std :: cout
MehrKlausur in Programmieren
Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Sommer 2014, 16. Juli 2014 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name: Matrikelnr.:
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
MehrÜbersicht. Informatik 1 Teil 9: komplexe Datentypen (Strukturen, Enumerationen, Unions)
Übersicht 9.1 Strukturen (Verwendung) 9.2 Strukturen (Typdeklaration) 9.3 Strukturen (Variablendeklaration) 9.4 Felder aus Strukturen 9.5 Zugriff auf Strukturkomponenten 9.6 Zugriff auf Strukturkomponenten
Mehr11.3 Virtuelle Methoden
11.3 Virtuelle Methoden Überdeckte Methoden: Betrachten wir noch einmal unsere Klassen Employee und Manager. class Employee void print() const cout
Mehr6 Speicherorganisation
Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für
Mehr5. Unterprogrammtechnik/Module
5. Unterprogrammtechnik/Module Unterprogramm/Modul: separate Programmeinheit, mit Anweisungen, die eine bestimmte Aufgabe erfüllen bekommt i.a. Argumente (Werte, Informationen) vom aufrufenden Programm
MehrFunktionen und Parameter
Funktionen in C++ Funktionen und Parameter Wie in Java: Parameter sind lokale Variablen Argumente werden bei Aufruf zugewiesen Extras: Zeiger-Parameter für alle Typen: als Rückgabewerte um große Kopien
MehrModul 122 VBA Scribt.docx
Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval
MehrEinstieg in die Informatik mit Java
1 / 26 Einstieg in die Informatik mit Java Felder, mehrdimensional Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Überblick: mehrdimensionale Felder 2 Vereinbarung
Mehr2. Semester, 2. Prüfung, Lösung
2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter
Mehr