2016-11-17 72 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