Die Abschwächung von Reihungsausdrücke in C
In dieser Lektion behandeln wir Zugriffe auf die erste Komponente einer Reihung. Zugriffe auf weitere Komponenten werden etwas später gezeigt werden.
Das Abschwächen einer Reihungsvariablen
Im allgemeinen ist der Wert einer Reihungsvariablen nicht etwa die Reihung selber, sondern die Adresse ihrer ersten Komponente.
Man sagt auch, daß eine Reihungsvariable in die Adresse ihrer ersten Komponente abgeschwächt werden.
Wert von »a« nach »int a[ 2 ];«
.--------------.
a ---------> | int-Objekt 0 |
|--------------|
| int-Objekt 1 |
'--------------'
Der Ausdruck "*a" bezeichnet daher den Inhalt der Komponente 0 der Reihung.
Die erste Komponente (als Objekt) ist »*a« („Inhalt von a“, „Dereferenzieren von a“).
»a« ist in der Regel „die Adresse“ von »*a«,
Die Reihung "a" und ihre Komponente *a
.--------------.
a ---------> | *a |
|--------------|
| |
'--------------'main.c
#include <stdio.h>
#include <stdlib.h> int main( void )
{ int a[ 2 ];
*a = 41;
printf( "%d\n", *a ); }Die Reihung "a" und ihre Komponente *a beim printf
.--------------.
a ---------> | 41 |
|--------------|
| |
'--------------'
Die erste Komponente kann nach »int * p = a;« durch den Zeiger »p« referenziert werden. »p« hat dann praktisch dieselbe Bedeutung wie »a« (»p« ist ein Alias für »a«).
#include <stdio.h> int main( void )
{ int a[ 2 ];
int * p = a;
*p = 41;
printf( "%d\n", *p ); }Die Reihung "a" und ihre Komponente *a beim printf
.--------------.
a ---------> | 41 |
.---> | |
| |--------------|
p -----' | |
| |
'--------------'