Ich fand heraus, dass Adresse des ersten Elements der Struktur die gleiche wie die Adresse der Struktur ist. Die Dereferenzierung der Adresse der Struktur gibt jedoch nicht den Wert des ersten Datenelements zurück. Die Dereferenzierungsadresse des ersten Datenelements gibt jedoch seinen Wert zurück. z.B. Die Adresse der Struktur = 100, die Adresse des ersten Elements der Struktur ist ebenfalls 100. Nun sollte die Dereferenzierung bei beiden auf die gleiche Weise funktionieren.Dereferenzieren einer Struktur, um den Wert des ersten Mitglieds zu erhalten
Code:
#include <iostream>
#include <cstring>
struct things{
int good;
int bad;
};
int main()
{
things *ptr = new things;
ptr->bad = 3;
ptr->good = 7;
std::cout << *(&(ptr->good)) <<" " << &(ptr->good) << std::endl;
std::cout << "ptr also print same address = " << ptr << std::endl;
std::cout << "But *ptr does not print 7 and gives compile time error. Why ?" << *ptr << std::endl;
return 0;
}
'* & some_type' sollten Sie immer' some_type' geben, solange Sie keine verrückten Überladen von Operatoren haben. – NathanOliver
Wenn Sie einen Zeiger dereferenzieren, erhalten Sie den Wert dessen, worauf der Zeiger zeigt. Wenn der Zeiger auf eine Struktur zeigt, ist der "Wert" die * Struktur *. –
Während die Adresse des ersten Mitglieds * die gleiche wie die Adresse der Struktur sein kann, ist ein Zeiger auf die Struktur * kein * Zeiger auf das erste Mitglied. Die Typen sind zunächst unterschiedlich. –