Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
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
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.