Größe des Zeiger-variable in einer Struktur
int main()
{
struct
{
char *name_pointer;
char all[13];
int foo;
} record;
printf("%d\n",sizeof(record.all));
printf("%d\n",sizeof(record.foo));
printf("%d\n",sizeof(record));
return 0;
}
Möchte ich die Größe des Zeigers vatiable "*name_pointer" in der Struktur....
Lesen Sie: Was bedeutet
sizof(char*); würde Ihnen sagen,
sizeof(Datensatz.name_pointer);
Sie möchten
was hielt Sie von sizeof(record.name_pointer);
sizeof(&arr)
zurück?, um zu wissen, die Unterschiede zwischen name_pointer
und all
.sizof(char*); würde Ihnen sagen,
sizeof(Datensatz.name_pointer);
Sie möchten
sizeof(record.name_pointer)
oder strlen(record.name_pointer)
?was hielt Sie von sizeof(record.name_pointer);
InformationsquelleAutor user2641934 | 2013-08-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Um die Größe des Zeigers verwenden
Ihrem vielleicht erhalten Sie 2, 4, 6, 8, usw.
Um die Größe der Daten, gezeigt durch den Zeiger (a
char
) verwendenIhre bekommen sollte 1.
Um die string Länge des string zeigte auf, indem Sie den Zeiger, davon
record.name_pointer
Punkte zu berechtigten Daten -, Anwendung -BTW @alk und sagt, warum die
(int)
casting vor, ein passendes Konvertierungs-Spezifizierer verwenden mitsizeof()
umfasst die 'z' - Präfix. Das Ergebnissizeof()
undstrlen()
ist der Typsize_t
. Obwohlsize_t
undint
sind oft die gleichen, gibt es viele Systeme, auf denen Sie in verschiedenen Größen. Und da sizeof() ist ein "unsigned Ganzzahl-Typ" (C11 6.5.3.4), empfehle ichFehler: Als
strlen()
zurücksize_t
die geeignet umwandlungsspezifikator sollte das Präfix die entsprechende Länge modifierz
zuzd
.ist definiert als
char *
, so weist es genau ein Zeichen. So alles in Ordnung ist.Ja - ich Stimme - gedacht, war aber unsicher hinzufügen, dass die Verbesserung um eine grundlegende Frage.
Awasthi
record.name_pointer
ist ein Zeiger auf einechar
, so ist die sizeof(*aufnehmen.name_pointer) 1. Als ein string in C ist eine variable Länge array von Zeichen und der string-Wert übergeben wird, der durch die Adresse des erstenchar
, obrecord.name_pointer
ist benutzt , zeigen Sie auf nur 1char
, ein string oder eine Feste char-array ist nicht von OP-code-snippet.InformationsquelleAutor chux
Pointer-variable immer(32-bit-system-Architektur) haben die Größe 4.
wenn Sie 64-bit-Systemarchitektur 8.
always
hinzufügenin your system
Nicht auf 64 bit Systemen. Es 8 gibt. Und es gibt noch andere ...!
In verschiedenen PIC-Prozessoren, die Daten, die die Größe des Mauszeigers ist 2.
InformationsquelleAutor someone
Ich glaube, es ist eine GUTE Idee, Datentypen, sizeof anstatt der Variablen für native Datentypen. so verwenden:
InformationsquelleAutor Manoj Awasthi