Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmieren in C Wie speichert C

Ähnliche Präsentationen


Präsentation zum Thema: "Programmieren in C Wie speichert C"—  Präsentation transkript:

1 Programmieren in C Wie speichert C
Programmieren in C Wie speichert C? Variable, Pointer und mehr … aus Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2017 Peter Klingebiel, HS Fulda, FB AI

2 Rechnerarchitektur 1 von-Neumann-Architektur
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

3 Rechnerarchitektur 2 von-Neumann-Architektur
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

4 Rechnerarchitektur 3 Ablauf einer simplen Operation: c = a + b
Variable / Werte sind im Speicher abgelegt Operationen finden in CPU statt Steuerwerk: Adresse a  Speicherbus Steuerwerk: Wert a holen  Register R1 Steuerwerk: Adresse b  Speicherbus Steuerwerk: Wert b holen  Register R2 Rechenwerk: R1 + R2  R1 Steuerwerk: Adresse c  Speicherbus Steuerwerk: Wert Register R1  c Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

5 Wie speichert C? 1 Hauptspeicher
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

6 Wie speichert C? 2 Beispiel: Zugriff auf Variable
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

7 Wie speichert C? 3 Vor Programmstart
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

8 Wie speichert C? 4 Programmstart und Aufruf von main()
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

9 Wie speichert C? 5 Zuweisung a = 4;
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

10 Wie speichert C? 6 Zuweisung b = 8;
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

11 Wie speichert C? 7 Berechnung a * b;
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

12 Wie speichert C? 8 Zuweisung c = a * b;
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

13 Wie speichert C? 9 Danach Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

14 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, oder exakter: 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; Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

15 Exkurs: Zeiger 2 Zugriff auf Variable mit Pointer
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

16 Exkurs: Zeiger 3 Vor Programmstart
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

17 Exkurs: Zeiger 4 Programmstart und Aufruf von main()
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

18 Exkurs: Zeiger 5 Zuweisung i = 5;
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

19 Exkurs: Zeiger 6 Zuweisung ip = &i;
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

20 Exkurs: Zeiger 7 Berechnung *ip + *ip;
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

21 Exkurs: Zeiger 8 Zuweisung *ip = *ip + *ip;
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

22 Exkurs: Zeiger 9 Danach Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

23 Exkurs: Zeiger 10 Warum und wozu Zeiger?
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

24 Exkurs: Zeiger 11 In anderes Programmiersprachen, z.B. Ada oder Pascal, werden Pointer i.d.R. 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: Funktionsdefinition: void getint(int *i) {} Funktionsaufruf: getint(&i); Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

25 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 der Funktion sind die Parameter Zeiger! Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

26 Call by value 1 Beispiel: Funktionsaufruf cbv
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

27 Call by value 2 Vor Programmstart
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

28 Call by value 3 Zuweisung a = 4
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

29 Call by value 4 Kopie des Parameters an Funktion
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

30 Call by value 5 Aufruf der Funktion
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

31 Call by value 6 Zuweisung b = b * 2
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

32 Call by value 7 Rückkehr aus Funktion
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

33 Call by value 8 Variable a unverändert!!!
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

34 Call by reference 1 Beispiel: Funktionsaufruf cbr
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

35 Call by reference 2 Vor Programmstart
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

36 Call by reference 3 Wo ist der Unterschied cbv – cbr?
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

37 Call by reference 4 Aufruf: Adresse der Variablen!!!
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

38 Call by reference 5 In Funktion: Zeiger auf Variable!!!
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

39 Call by reference 6 Zuweisung a = 4
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

40 Call by reference 7 Kopie der Adresse an Funktion
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

41 Call by reference 8 Aufruf der Funktion
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

42 Call by reference 9 Zuweisung *b = *b * 2
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

43 Call by reference 10 Rückkehr aus Funktion
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI

44 Call by reference 11 Variable a verändert!!!
Programmieren in C - Peter Klingebiel - HS Fulda - FB AI


Herunterladen ppt "Programmieren in C Wie speichert C"

Ähnliche Präsentationen


Google-Anzeigen