2016-11-17 126 views
0

我試圖玩弄結構,這是我所:結構用C - 訪問值

#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

您正在打印'i1'而不是'item'。 'i1'是一個未初始化的變量。 – kaylum

+0

您需要將一個結構賦給'i1',即'i1'未初始化。 –

+0

等一下...在你的'void display'函數中,爲什麼要做'printf(「%d」,i1.quant);'而不是'printf(「%d」,item.quant);'? ? –

回答

3

display函數中,您定義了一個'空'(未初始化的)struct Item。我相信你想打印應該是item.quant什麼:

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

我覺得下面的行應該被刪除

struct Item i1; 

,你應該用以下內容替換印刷生產線:

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

根據你的程序,它應該給你一個錯誤或警告,做出以上更改後,輸出應該是「10」而不是8.當你正在打印item.quant