67
Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010 http://www.rz.hs-fulda.de/et Peter Klingebiel, HS Fulda, DVZ

Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Embed Size (px)

Citation preview

Page 1: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Informatik IIGrundlagen der Programmierung

Programmieren in C

Grundlagen C 1

Hochschule Fulda – FB ET

Sommersemester 2010

http://www.rz.hs-fulda.de/et

Peter Klingebiel, HS Fulda, DVZ

Page 2: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 2

Zeichensatz von C 1

• Buchstaben (incl. Unterstrich)ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_

• Ziffern0123456789

• Semikolon (z.B. am Ende einer Anweisung);

• Punkt (Gleitpunktzahlen, Selektionsoperator).

Page 3: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 3

Zeichensatz von C 2

• Sonderzeichen (Operatoren, Satzzeichen)( ) [ ] < > + - * / % ^ ~ & | = ! ? , :

• Anführungszeichen (Einzelzeichen, Strings)' "

• Blockklammern{ }

• Fluchtzeichen (für Sonderzeichen)\

• Doppelkreuz (Preprozessordirektiven)#

Page 4: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 4

Reservierte Worte in C 1

• C kennt 32 reservierte Worte

auto break case charconst continue default dodouble else enum externfloat for goto ifint long register returnshort signed sizeof staticstruct switch typedef unionunsigned void volatile while

Page 5: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 5

Reservierte Worte in C 2

• auto Speicherklasse automatisch• break Verlassen von Schleife/Mehrfachauswahl• case Auswahl in Mehrfachauswahl• char Typbezeichner für Zeichen• const Attribut bei Typangabe• continue Fortsetzungsanweisung• default Standardauswahl bei Mehrfachauswahl• do Schleifenanweisung• double Typbezeichner Fließkommazahl• else Teil von Einfach-, Mehrfachalternative

Page 6: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 6

Reservierte Worte in C 3

• enum Typbezeichner für Aufzählungstyp• extern Speicherklasse extern• float Typbezeichner Fließkommazahl• for Schleifenanweisung• if Alternative oder bedingte Anweisung• int Typbezeichner Ganzzahl• long Typbezeichner Ganzzahl• register Speicherklasse Register• return Rückkehranweisung• short Typbezeichner Ganzzahl

Page 7: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 7

Reservierte Worte in C 4

• signed Typbezeichner, -modifizierer• sizeof Operator zur Größenbestimmung• static Speicherklasse statisch• struct Strukturvereinbarung• switch Auswahlanweisung• typedef Typnamenvereinbarung• union Datenstruktur mit Alternativen• unsigned Typbezeichner, -modifizierer• void Typbezeichner• while Schleifenanweisung

Page 8: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 8

Datentypen 1

• Menge von Werten undMenge von Operationen auf diesen Werten

• Konstanten / Variablen• Datentypen bestimmen

– Darstellung der Werte im Rechner– benötigten Speicherplatz– zulässige Operationen

• Festlegung des Datentyps– implizit durch Schreibweise bei Konstanten– explizit durch Deklaration bei Variablen

Page 9: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 9

Datentypen 2

• Vordefinierte Grunddatentypen

char Zeichen (ASCII-Kode, 8 Bit)int Ganzzahl (maschinenabhängig, meist 16 oder 32 Bit)float Gleitkommazahl (32 Bit, IEEE, etwa auf 6 Stellen genau)double doppelt genaue Gleitkommazahl (64 Bit, IEEE, etwa auf 12 Stellen genau)void ohne Wert (z.B. Zeiger)

Page 10: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 10

Datentypen 3

• Type-Modifier spezifizieren Grunddatentypen

short int, long int- legen Länge der Ganzzahl fest- maschinenabhängig, 16 Bit, 32 Bit - int kann auch fehlenlong double - Gleitkommazahl, erw. Genauigkeit- oft 128 Bit, IEEEsigned, unsigned - char/int mit/ohne Vorzeichen

Page 11: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 11

Bezeichner 1

• Bezeichner (Identifier) für Konstanten, Variablen, Funktionen, Typen usw. müssen mit einem Buchstaben oder Unterstrich beginnen

• danach können Buchstaben, Unterstriche und Ziffern folgen

• Groß- und Kleinschreibung wird streng unterschieden

• keine Sonderzeichen (z.B. $ oder #)• keine reservierten Worte• Vorsicht bei vordefinierten Funktionsnamen

Page 12: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 12

Bezeichner 2

• Syntaxdiagramm

Page 13: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 13

Bezeichner 3

• Backus-Naur-Form (BNF)

letter ::= A|B|…|Y|Z|a|b|…|y|z|_digit ::= 0|1|2|3|4|5|6|7|8|9

identifier ::= letter { letter | digit }

• BNF / EBNF zur Beschreibung formaler Sprachen

• Vielfältige Formen / Notationen

Page 14: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 14

Bezeichner 4

Page 15: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 15

Konstanten

• Konstanten haben einen festgelegten, unveränderbaren Wert

• explizite Deklaration, z.B.const float pi = 3.141;

• implizite Notation, z.B.u = 2 * r * 3.141;

• mittels CPP textuelle implizite Ersetzung#define PI 3.141...

u = 2 * PI * r;

Page 16: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 16

Variablen 1

• Variable sind Platzhalter für Daten• haben einen festgelegten Speicherort,

an dem der aktuelle Wert gespeichert wird• der aktuelle Wert (an seinem Speicherort)

ist veränderbar• Attribute von Variablen:

– Datentyp– Namen (Bezeichner, Identifier)– Lebensdauer / Speicherklasse– evtl. initialer Wert– Sichtbarkeit (Scope)

Page 17: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 17

Variablen 2

• Deklaration / Definition von Variablen

Page 18: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 18

Variablen 3

• Variablen-Definitionen, z.B.double u;short int i, tab = 5;char *hallo = "Hallo, Welt!";

• Position im Programm:– außerhalb von Funktionen– am Anfang eines Blocks, also nach {

• Wert ist veränderbar (Zuweisung, Operation)• Programmstruktur Lebensdauer / Scope

Page 19: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 19

Wie speichert C? 1

• Hauptspeicher

Page 20: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 20

Wie speichert C? 2

• Beispiel: Zugriff auf Variable

Page 21: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 21

Wie speichert C? 3

• Vor Programmstart

Page 22: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 22

Wie speichert C? 4

• Programmstart und Aufruf von main()

Page 23: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 23

Wie speichert C? 5

• Zuweisung a = 4;

Page 24: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 24

Wie speichert C? 6

• Zuweisung b = 8;

Page 25: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 25

Wie speichert C? 7

• Berechnung a * b;

Page 26: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 26

Wie speichert C? 8

• Zuweisung c = a * b;

Page 27: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 27

Wie speichert C? 9

• Danach

Page 28: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 28

Exkurs: Zeiger 1

• Wdh: Jede Variable hat einen Speicherort,d.h. eine Adresse im Hauptspeicher

• Zeiger (Pointer) sind Variable, die auf eine andere Variable verweisen, oderexakter: den Speicherort bzw. die Adresse dieser Variablen als Wert haben

• Pointerdefinition: int *ip; int i = 5;

• Adresszuweisung: ip = &i;• Zugriff auf Wert: *ip = *ip + *ip;

Page 29: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 29

Exkurs: Zeiger 2

• Zugriff auf Variable mit Pointer

Page 30: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 30

Exkurs: Zeiger 3

• Vor Programmstart

Page 31: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 31

Exkurs: Zeiger 4

• Programmstart und Aufruf von main()

Page 32: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 32

Exkurs: Zeiger 5

• Zuweisung i = 5;

Page 33: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 33

Exkurs: Zeiger 6

• Zuweisung ip = &i;

Page 34: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 34

Exkurs: Zeiger 7

• Berechnung *ip + *ip;

Page 35: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 35

Exkurs: Zeiger 8

• Zuweisung *ip = *ip + *ip;

Page 36: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 36

Exkurs: Zeiger 9

• Danach

Page 37: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 37

Exkurs: Zeiger 10

• Warum und wozu Zeiger?

Page 38: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 38

Exkurs: Zeiger 11

• In anderes Programmiersprachen, z.B. Ada oder Pascal, werden Pointer meist nur für dynamische Datentypen verwendet

• In C werden Zeiger leider schon von Anfang an für einfache Grundoperationen benötigt!

• Pointer notwendig für Eingaben:scanf("%d", &i);

• Pointer notwendig als Funktionsparameter:doit(int *i)

Page 39: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 39

Noch ein Exkurs: Ein-/Ausgabe 1

• Wdh: Aufbau eines C-Programms:

#include <stdio.h>

int main(void){

int a, b, c;

scanf("%d", &a);scanf("%d", &b);c = a * b;printf("c = %d\n", c);return(0);

}

Page 40: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 40

Noch ein Exkurs: Ein-/Ausgabe 2

• Jedes laufende C-Programm (= Prozess) hat voreingestellt drei Ein-/Ausgabekanäle:– stdin Standardeingabe, meist Tastatur– stdout Standardausgabe, meist Bildschirm– stderr Standardfehlerausgabe, Bildschirm

• Die Standardkanäle sind umlenkbar:$ meinprog <InFile >OutFile 2>ErrFile

• Bei einigen C-Compilern ist unter Windows auch der Kanal stdprn als Standarddrucker definiert

Page 41: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 41

Noch ein Exkurs: Ein-/Ausgabe 3

• Einfache zeichenweise Ein- und Ausgabe mit getchar() und putchar(), z.B.:int c;

c = getchar(); /* Zeichen von stdin */putchar(c); /* Zeichen auf stdout */

• Formatierte Ein- und Ausgabe mit printf() und scanf(), z.B.:int c;

scanf("%c", &c);printf("%c", c);

Page 42: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 42

Noch ein Exkurs: Ein-/Ausgabe 4

• Obacht: getchar() liefert, bzw. putchar() benötigt als Parameter den Typ int!

• Typumwandlung von char int erfolgt meist automatisch

• Hauptgründe:– historisch ist char eine Art Untertyp von int– die Zeichenkonstante EOF als Endekennzeichner

für die Eingabe ist in stdio.h als -1 definiert

• Simples Kopierprogrammfragment:while((c = getchar())!= EOF) putchar(c);

Page 43: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 43

Noch ein Exkurs: Ein-/Ausgabe 5

• Formatierte Ausgabe mit printf()• Aufruf: printf(fmt, args)• printf() konvertiert und gibt die Parameter args unter Kontrolle des Formatstrings fmt auf stdout aus

• Der Formatstring fmt ist eine Zeichenkette• Parameter args können auch fehlen• Die Parameter args müssen den Typ haben,

wie er im Formatstring fmt angegeben ist

Page 44: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 44

Noch ein Exkurs: Ein-/Ausgabe 6

• Formatierte Eingabe mit scanf()• Aufruf: scanf(fmt, args)• scanf() konvertiert und liest die Parameter args unter Kontrolle des Formatstrings fmt von stdin ein

• Der Formatstring fmt ist eine Zeichenkette• Die Parameter args müssen den Typ haben,

wie er im Formatstring fmt angegeben ist• Die Parameter args müssen Pointer sein

Page 45: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 45

Noch ein Exkurs: Ein-/Ausgabe 7

• Wichtige Formatzeichen: %c Einzelzeichen / char%d Ganzzahl / int%ld Ganzzahl / long int%f Gleitkommazahl / float%lf Gleitkommazahl / double%s Zeichenkette / char *

• Wichtige Sonderzeichen\n Newline, Zeilensprung\t Tabulator\0 EOS - Endezeichen in String\' einfaches Anführungszeichen '\" doppeltes Anführungszeichen "\% Prozentzeichen %\\ Fluchtzeichen \

Page 46: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 46

Noch ein Exkurs: Ein-/Ausgabe 8

• Beispiele:

char c;int a, b;double d;

printf("integer a und b eingeben: ");scanf("%d %d", &a, &b);printf("a=%d b=%d\n", a, b);printf("char c und double d: ");scanf("%c %lf", &c, &d);printf("c=%c d=%lf\n", c, d);

Page 47: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 47

Noch ein Exkurs: Ein-/Ausgabe 9

Page 48: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 48

Funktionsaufruf und Parameter

• Parameterübergabe als Werte (call by value), z.B. bei printf()

• Variable werden als Werte in den Adressraum der Funktion kopiert

• Parameterübergabe als Adresse (call by reference), z.B. bei scanf()

• Adressen der Variablen werden in den Adressraum der Funktion kopiert

• In Funktion sind die Parameter Zeiger

Page 49: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 49

Call by value 1

• Beispiel: Funktionsaufruf cbv

Page 50: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 50

Call by value 2

• Vor Programmstart

Page 51: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 51

Call by value 3

• Zuweisung a = 4

Page 52: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 52

Call by value 4

• Kopie des Parameters an Funktion

Page 53: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 53

Call by value 5

• Aufruf der Funktion

Page 54: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 54

Call by value 6

• Zuweisung b = b * 2

Page 55: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 55

Call by value 7

• Rückkehr aus Funktion

Page 56: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 56

Call by value 8

• Variable a unverändert!!!

Page 57: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 57

Call by reference 1

• Beispiel: Funktionsaufruf cbr

Page 58: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 58

Call by reference 2

• Vor Programmstart

Page 59: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 59

Call by reference 3

• Wo ist der Unterschied cbv – cbr?

Page 60: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 60

Call by reference 4

• Aufruf: Adresse der Variablen!!!

Page 61: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 61

Call by reference5

• In Funktion: Zeiger auf Variable!!!

Page 62: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 62

Call by reference 6

• Zuweisung a = 4

Page 63: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 63

Call by reference 7

• Kopie der Adresse an Funktion

Page 64: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 64

Call by reference 8

• Aufruf der Funktion

Page 65: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 65

Call by reference 9

• Zuweisung *b = *b * 2

Page 66: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 66

Call by reference 10

• Rückkehr aus Funktion

Page 67: Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 67

Call by reference 11

• Variable a verändert!!!