grösse eines struct elements
-
hmm warum kann ich eigentlich nicht die grösse eines struct elements bestimmen ???
typedef struct{ long uu; char tt; }t_test; int groesse=sizeof(t_test.tt);
geht nicht.
Ist zwar nicht so dramtisch weilt_test v_test; groesse=sizeof(v_test.tt);
funzt, aber ich wüsst schon gerne meinen denkfehler
-
Der "Denkfehler" ist, dass eine Struktur gleichwertig zu einer Instanz ist. Die .element-Schreibweise funktioniert nur, wenn auf der linken Seite eine Instanz der Struktur steht.
[ In C++ würde t_test::tt funktionieren, aber C kennt den :: Operator nicht. ]
-
fast verstanden THX
aber eigentlich dürfte dann auch nicht
sizeof(t_test)
klappen
(irgendwie wird mir c immer unsympatischer)
-
Doch. sizeof kann sowohl Typnamen als auch Instanzen des Typs verarbeiten.
t_test.tt ist aber ein Mischmasch.
-
Ich bin nicht ganz sicher, aber das könnte historische Gründe haben. Ganz früher waren struct-Komponenten nicht in einem eigenen Namensraum, so dass du sizeof(tt) hättest schreiben können. Jedenfalls folgere ich das aus der Tatsache, dass viele Unix-Strukturen-Elemente so eigenartige Namen haben, z.b. in struct stat fangen alle mit st an, st_blksize, st_uid usw, oder struct tm hat Elemente die tm_sec, tm_day usw. heißen.