Dein Fortschritt:
0 / 0 Aufgaben
1
Ein Fahrradcomputer im Test
AFB I–IIJonas baut für sein Fahrrad einen kleinen Fahrradcomputer. Bevor er Sensoren anschließt, testet er auf dem PC, wie Werte über einen Zeiger verändert werden. Das Programm speichert die gefahrene Strecke in Kilometern und die Durchschnittsgeschwindigkeit in km/h.
Die Skizze zeigt den Speicher vereinfacht direkt nach Anweisung (1). Die Adressen sind ausgedacht; beim echten Programm ändern sie sich bei jedem Start.
C · fahrrad.c
#include <stdio.h> int main(void) { int strecke = 12; // gefahrene Kilometer int tempo = 18; // Durchschnitt in km/h int *z = &strecke; // (1) *z = *z + 5; // (2) z = &tempo; // (3) *z = 2 * *z; // (4) printf("%d %d %d\n", strecke, tempo, *z); return 0; }
Speicher nach Anweisung (1)
int belegt hier typisch 4 Byte, ein Zeiger 8 Byte.- Beschreiben Sie, was die Anweisungen (1) bis (4) jeweils bewirken.
- Bestimmen Sie die Ausgabe des Programms sowie die Adresse, die am Ende in
zsteht (Adressen wie in der Skizze). - Erklären Sie, warum Jonas’ spätere Ergänzung
int umfang; scanf("%d", umfang);für den Radumfang fehlerhaft ist, und wie die Zeile richtig lautet.
Hinweise
Hinweis zu Aufgabe a)
Unterscheiden Sie genau: Steht vor
z ein Stern oder nicht? Ohne Stern ist die Adresse gemeint, mit Stern der Wert an dieser Adresse. In der Deklaration (1) gehört der Stern dagegen zum Typ.„Beschreiben“ heißt: jede Anweisung in eigenen Worten mit Fachbegriffen wiedergeben, noch ohne Endergebnis.Hinweis zu Aufgabe b)
Führen Sie eine kleine Tabelle mit den Spalten
strecke, tempo und z und tragen Sie nach jeder Anweisung die Werte ein.Hinweis zu Aufgabe c)
Was braucht
scanf, um einen Wert in eine Variable von main schreiben zu können — den bisherigen Inhalt oder den Ort der Variablen? Vergleichen Sie mit *z = … aus Anweisung (2).