2010-12-01 5 views
0

Ich nehme an wie Standard-Arrays (d. H. Integer-Arrays), wenn Sie ein Array von Strukturen übergeben müssen Sie die Größe des Arrays mit ihm. Was ich jedoch noch nicht verstehe, ist, dass wenn Sie Größe eines ersten Elements der Struktur nehmen, 4 erhalten werden (was 4 Bytes im ersten Element bedeutet?).Übergeben eines Struct-Arrays in eine Funktion und Ausführen der Größe der Operation darauf

Jetzt übergeben ich ein Array von Strukturen, die nur Strings enthält. Ich überprüfe die Größe eines einzelnen Array - Elements (erinnere mich daran, es wird eine Struktur sein) Ich bekomme etwas wie 28, aber nachdem ich es in eine Funktion übergeben habe (und ja in die Funktion übergeben ich meine übergeben durch Wert die Adresse der erstes Element in meinem Array), bekomme ich nur 4.

Jetzt vermute ich, dass die Größe von das erste Element meiner Struktur in das Array bekommt. So habe ich meine Array myArray vom Typ myStruct:

myStruct { String name String Adresse String Postleitzahl }

Ich nehme an sizeof auf "Name" auf der Suche? Aber ich weiß für eine Tatsache, dass der Name nicht 4 Bytes lang ist - es ist 10.

Was genau ist die Größe des Blicks? Wie sieht die Speicherstruktur eines Arrays von Strukturen aus?

Dank Thomas

+1

Bitte geben Sie die Sprache an, wenn Sie Fragen stellen. – TelegramSam

Antwort

0

Das 4 wird die Größe des Zeigers, die Sie eher bestanden haben als die Größe der Struktur, auf die sie sich bezieht.

+0

ahh (siehe meinen Beitrag). Ich habe versucht, Dereferenzierung und ich 32. Nun, warum ist das als das erste Element in meiner Liste ist ein Typ, den ich definiert habe, um eine Zeichenfolge von 10 Zeichen zu sein? – Prof

+0

können wir das ohne Ihre Strukturdefinition und Kenntnisse von Plattform und Compiler nicht beantworten –

0

sizeof() arbeitet mit Typen, nicht Objekte. sizeof(some_object) wird implizit als - mit Pseudo-Notation - "" genommen.

Verwandte Themen