2016-09-29 24 views
0

これは実際に私が取り組んでいるコードではありません。これは、まったく同じエラーを生成する単純すぎるコード抽出です。したがって、単純化されたコードでエラーが発生する理由を知ることができれば、実際のコードに適用できます。事前に助言/アドバイスをありがとう!すべての構造体変数の初期化エラー。

#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

*そう*多くのエラーがありますがここに:それは行動の最善のコースであるように思えるd良い本。 K&Rは無敵のIMHOです。 – Bathsheba

+0

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

+0

私は実際に "The C Programming Language"本lololを使用しています。彼らはint値でも構造体を初期化しました。 – rickylance

答えて

1

まず、あなたはどちらかの括弧で囲まれた初期化子を使用し、または明示的に各メンバーを初期化する必要があり、とにかくint値とstruct型の変数を初期化することはできません。

struct fruit applies 
struct fruit oranges 
struct fruit strawberries 

はあなたがタイプstruct fruitの変数を定義し、メンバーにアクセスする方法はない、と述べました。正しい方法は、これを実行するための正しい構文は

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

又は、より正確な方法、

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

または、さらに中間変数を減らし、

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

@rickylanceコードを示してください。 –

+0

「fの記憶容量がわからない」というエラーが表示される – rickylance

+0

@rickylance [よく働いてくれます](https://ideone.com/EeYbNm) –

1

あろう。

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

またはdi RECT初期化:

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

またはC99で上向きに、指定された初期化子を使用して:

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

__Note:メンバ変数名はイラストレーションのためのもので、ドンは使用できません。 –

1

使用この:

struct fruit fruit; 

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

または

struct fruit fruit = {x, y, 4}; 
関連する問題