2016-08-30 6 views
-1

Ich habe eine Struktur wie folgt aus:Wenn Zeiger in C verwenden

typedef struct { 
    int hi; 
} my_struct; 

Gibt es einen Vorteil bei der Verwendung dieses:

my_struct *test = malloc(sizeof(my_struct)); 
test->hi = 1; 

Statt dessen:

my_struct test; 
test.hi = 1; 
+3

Es hängt davon ab, was Sie tun. Wenn Sie diese beiden Codefragmente sehen, gibt es keinen praktischen Unterschied (außer im ersten Fall, wo Sie dynamisch zuweisen, dürfen Sie nicht vergessen, den Speicher freizugeben). –

+1

Beide würden Speicher für Ihre Struktur zuweisen, aber malloc() wird aus dem Heap zuordnen, "mystruct test" wird auf dem Stack zuweisen –

+0

Sie sind nützlich, wenn Sie möchten, dass Ihr Programm tatsächlich etwas produziert, anstatt nur privat zu tun Berechnung an sich selbst (was ein intelligenter Compiler zu einem No-Op optimieren würde). ;-) – PSkocik

Antwort

1

Nein normalerweise ist es genau das Gegenteil. Wenn Sie können das Format verwenden, um Ihre requrement

my_struct test; 
test.hi = 1; 
zu erfüllen

dann ist es immer besser, weniger Aufwand im laufenden Betrieb. Es gibt im Allgemeinen keinen Vorteil, Speicherzuweisungsfunktionen zu verwenden, wenn Sie darauf verzichten können.