Eine Frage zu Void Zeiger !

QXV

Grünschnabel
Hallo C Freunde,

ich habe eine Frage. Welch Datentyp hat diese Var

Var2 = (void*) malloc(sizeof(struct_type));

wenn ich richtig verstehe, gibt malloc() standardmäßig einen Void zeiger zurück.
Dann ist Var ein (void**) oder ein (void*) ?

und typdefin hat Var1 hier ?

Var1 = (void**) malloc( num_of_p * sizeof(void*));

wenn ich jetzt Var1 und Var2 zu zeiger_auf _struct (z.B. viereck) casten. Wie kann ich dann auf "Mitglied der Struktur" zugreifen ?

struct viereck
{
double Länge;
double Breite;

}

Danke
 
Code:
struct viereck
{
double Länge;
double Breite;

}

void* bla = malloc( sizeof( viereck ) );

(viereck*)bla->Länge;
 
Hi.
Hallo C Freunde,

ich habe eine Frage. Welch Datentyp hat diese Var

Var2 = (void*) malloc(sizeof(struct_type));
Man kann nicht sagen welchen Typ die Variable Var2 hat, denn das hängt davon ab wie sie deklariert ist. Wenn dieser Code ohne Warnungen kompiliert wird, handelt es sich zumindest um irgendeinen Zeigertypen.

In C sollte man das Resultat von malloc aber auch nicht casten. In C++ hingegen muss man casten. (wenn var nicht ein Zeiger auf void ist)
wenn ich richtig verstehe, gibt malloc() standardmäßig einen Void zeiger zurück.
Ja, natürlich. Ein Zeiger auf void ist ein Zeiger der mit allen anderen Zeigertypen kompatibel ist.
Dann ist Var ein (void**) oder ein (void*) ?
Nein, nicht unbedingt. Siehe oben.
und typdefin hat Var1 hier ?
Die Variablen ändern den Typ nicht. Sie werden als Variable eines Typs deklariert und behalten den Typ bei.
wenn ich jetzt Var1 und Var2 zu zeiger_auf _struct (z.B. viereck) casten. Wie kann ich dann auf "Mitglied der Struktur" zugreifen ?
C:
struct viereck
{
double Laenge;
double Breite;

} *v;

v = malloc(sizeof(struct viereck));

v->Laenge = 5;
...
free(v);
Gruß
 
Zurück