2016-11-17 12 views
0

は、私は構造で遊んしようとしています、これは私が持っているものである:それはすることになっているよう構造 - アクセス値

#DEFINE LINEAR 1 
    int val; 
    struct Item 
    { 
     double price; 
     int weight; 
     char Tax; 
     int quant; 
     int minQuant; 
     char namel[30]; 
    }; 

    double totalAfterTax(struct Item item); 

int main() { 
    struct Item I[21] = 
    { 
    { 4.4,275,8,10,2,"Royal Apples" }, 
    { 5.99,386,18,20,4,"Melon"}, 
    }; 
    val = display(I[0], LINEAR); 
    return 0; 
} //main end 


    void display(struct Item item, int linear){ 

    struct Item i1; 
    printf ("%d ", i1.quant); 
    return; 
    } 

さて、問題があるi1.quantは8を印刷していません。なぜわからないのですか?

お知らせください。

+4

'item'の代わりに' i1'を印刷しています。 'i1'は初期化されていない変数です。 – kaylum

+0

構造体を 'i1'に代入する必要があります。つまり、' i1'は初期化されていません。 –

+0

あなたの 'void display'関数で、なぜ' printf( "%d"、item.quant); 'の代わりに' printf( "%d"、i1.quant); ? –

答えて

3

displayファンクションの内部では、「空の」(未初期化の)struct Itemを定義します。私はあなたがitem.quantする必要があります印刷したいものを信じる:

printf ("%d \n",item.quant); 

void display(struct Item item, int linear){ 
    printf ("%d ", item.quant); 
} 
0

私は、以下の行が

struct Item i1; 

を削除する必要があり、あなたが以下で印刷ラインを交換すべきだと思いますあなたのプログラムによると、それはあなたにエラーまたは警告を与え、上記の変更を加えた後、出力は "10"でなく8でなければなりません。

関連する問題