Achtung: X darf verwendet werden, nicht initialisierte in dieser Funktion
Schreibe ich eine eigene "vector" - Struktur. Ich verstehe nicht, warum ich bin immer ein Warning: "one" may be used uninitialized
hier.
Dies ist mein Vektor.h-Datei
#ifndef VECTOR_H
#define VECTOR_H
typedef struct Vector{
int a;
int b;
int c;
}Vector;
#endif /* VECTOR_ */
Die Warnung geschieht hier in Zeile one->a = 12
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include "vector.h"
int main(void){
Vector* one;
one->a = 12;
one->b = 13;
one->c = -11;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
one
zugeordnet wurde, so deutet das auf eine unvorhersehbare Lage. Sie sollten entweder legen Sie es auf den Stapel:oder dynamisch Speicher reservieren für Sie:
Beachten Sie die Verwendung von
free
in diesem Fall. Im Allgemeinen werden Sie müssen genau einen Aufruf vonfree
für jeden Aufrufmalloc
.Erhalten Sie die Warnung, weil Sie nicht einen Wert zuweisen
one
, das ist ein Zeiger. Das ist Undefiniertes Verhalten.Sollten Sie erklären es wie folgt:
oder so:
in diesem Fall müssen Sie ersetzen
->
Betreiber mit.
wie diese:Schließlich in C99 und später können Sie vorgesehenen Initialisierungen:
Wenn Sie
Vector *one
Sie sind lediglich der Erstellung ein Zeiger auf die Struktur, aber es ist kein Speicher reserviert.Verwenden Sie einfach
one = (Vector *)malloc(sizeof(Vector));
zu erklären, Speicher und instanziert.