2016-09-29 9 views
0

Okay, das ist also nicht der Code, an dem ich gearbeitet habe. Dies ist ein vereinfachter Code-Extrakt, der genau den gleichen Fehler erzeugt. So dachte ich, wenn ich erfahren könnte, warum ich Fehler mit dem vereinfachten Code erhalte, könnte ich es auf meinen tatsächlichen Code anwenden. Danke für jede Hilfe/Beratung im Voraus!Fehler beim Initialisieren der Strukturvariablen

#include <stdio.h> 
int main() 
{ 
    struct fruit 
    { 
     int apples; 
     int oranges; 
     int strawberries; 
    }; 

    int x; 
    int y; 
    int z; 

    x = 1; 
    y = 2; 
    z = 3; 

    struct fruit apples = x; 
    struct fruit oranges = y; 
    struct fruit strawberries = 4; 

    printf("The value is %d or %d", fruit.apples,fruit.strawberries); 

    return 0; 
} 
+1

Es gibt * so * viele Fehler hier: es scheint die beste Vorgehensweise ist für Sie zu rea D ein gutes Buch. K & R ist unschlagbar IMHO. – Bathsheba

+0

'struct obst fruit = {x, y, 4};' – BLUEPIXY

+0

Ich benutze tatsächlich "Die C-Programmiersprache" Buch lolol. Sie initialisierten eine Struktur auch mit int-Werten. – rickylance

Antwort

1

Zunächst einmal können Sie keine struct Typ Variable mit einem int Wert initialisieren sowieso, müssen Sie entweder einen geschweiften Klammern stehenden Initialisierer verwenden oder jedes Mitglied explizit initialisieren.

Das heißt,

struct fruit applies 
struct fruit oranges 
struct fruit strawberries 

ist nicht, wie Sie eine Variable vom Typ struct fruit definieren und die Mitglieder zugreifen. Der richtige Weg wäre

struct fruit f; 
f.apples = x; 
f.oranges = y; 
f.strawberries= 4; 

oder eine genauere Art und Weise,

struct fruit f = {x,y,4}; 

oder sogar nach unten Schneiden der Zwischenvariablen,

struct fruit f = {1,2,4};  
+0

@rickylance bitte den Code anzeigen. –

+0

Ich bekomme einen Fehler, der sagt "Speichergröße von f ist nicht bekannt" – rickylance

+0

@rickylance [gut, funktioniert für mich] (https://ideone.com/EeYbNm) –

1

Die korrekte Syntax ist dies zu tun:

struct fruit f; 
f.apples = 1; 
f.oranges = 2; 
f.strawberries = 3; 

oder mit di rect Initialisierung:

struct fruit f = {1, 2, 3}; 

oder in C99 nach oben, unter Verwendung bezeichnet initializers:

struct fruit f = { 
    .apples = 1, 
    .oranges = 2, 
    .strawberries = 3, 
}; 
+0

___Hinweis: Die Namen der Mitgliedsvariablen dienen zur Illustration, nehmen Sie an, dass nur die Verwendung der Initialen funktionieren würde .___ –

1

Verwendung dieses:

struct fruit fruit; 

fruit.apples = {x}; 
fruit.oranges = {y}; 
fruit.strawberries = {4}; 

oder

struct fruit fruit = {x, y, 4}; 
Verwandte Themen