2017-11-06 3 views
0

Ich habe eine Struktur wie:Warum konnte ich keine Strukturadresse erhalten?

typedef struct { 
    int index; 
    float value; 
    ... 
} DAT; 

ich die Adresse structrue mit min und max-Wert zu finden hoffen, die für andere Zwecke verwendet werden (Hier habe ich die Struktur vereinfacht, weil ich in die anderen Informationen haben DAT, so habe ich die ganze Struktur erhalten)

void FindMinMax (DAT *, int, DAT *, DAT *); 
void main() { 
    DAT *L = NULL; 
    DAT *min = NULL, *max = NULL; 

    L = (DAT *) malloc(5 * sizeof(DAT)); 
    FindMinMax(L, 5, min, max); 
} 

void FindMinMax(DAT *L, int N, DAT *min, DAT *max) { 
    int i; 

    for (...) { 
    ... 
    /* for example */ 
    min = L + 1; 
    max = L + 2; 
    } 
} 

Warum ich nicht min = L + 1, max = L + 2 in Hauptfunktion zu bekommen?

+3

Ihr Beispiel zu vereinfacht ist. Bitte posten Sie einen [mcve], ephasis auf __Complete__. –

+0

Ein Doppelzeiger ist erforderlich, um den Zeiger des Aufrufers auf der Funktionsseite zu aktualisieren. – BLUEPIXY

+0

Dank n.m., ja, duplizierst du, was du erwähnt hast. – mlin

Antwort

1

nicht sicher, ob ich mich Ihre Frage gut verstanden, aber Sie wollen wahrscheinlich diese:

void main() { 
    DAT *L = NULL; 
    DAT *min = NULL, *max = NULL; 

    L = malloc(5 * sizeof(DAT)); // cast is not required 
    FindMinMax(L, 5, &min, &max); 
} 

void FindMinMax(DAT *L, int N, DAT **min, DAT **max) { 
    int i; 

    for (...) { 
    ... 
    /* for example */ 
    *min = L + 1; 
    *max = L + 2; 
    } 
} 
+0

Vielen Dank, Michael – mlin

Verwandte Themen