Student (§ 5.2)
und definieren einen Zeiger darauf.
// Pointer at structure
{
struct Student
{
...
};
Student peter, *pg;
// init peter
...
pg = &peter; // pointer at peter
cout << (*pg).vorname; // conventional access
cout << pg->vorname; // better access
...
}
|
Die Zugriffe (*pg).vorname und pg->vorname
sind völlig äquivalent. Allerdings verbessert letzterer
deutlich die Lesbarkeit eines Programmes insbesondere, wenn
der Zeiger ein dynamisches Feld des Typs Student darstellt.
(siehe Ex650.cc)
Dies zeigt sich insbesondere beim Zugriff auf Feldelemente von
vorname (d.h., einzelne Zeichen). Der Zugriff auf das
0. Zeichen erfolgt mittles
pg->vorname[0] oder
*pg->vorname
oder
(*pg).vorname[0] oder
*(*pg).vorname
und der Zugriff auf das 3. Zeichen mittels
pg->vorname[3] oder
*(pg->vorname+3)
oder
(*pg).vorname[3] oder
*((*pg).vorname+3)
Beachten Sie, daß pg->vorname einen Zeiger auf den Typ
char darstellt und der Dereferenzierungsoperator *
vor der Addition + ausgeführt wird.
Vermuten und testen Sie, was bei Verwendung von
*pg->vorname+3 herauskommt.