2014-11-23 109 views
-4

我的問題在這裏似乎總是關於使用函數。它仍然讓我困惑!在這本教科書練習中,我被要求按價值傳遞一個結構,然後調整它並通過引用傳遞。最初,我設計了一些代碼,讓所有工作都以主要方式完成。現在,我正在傳遞價值。所以我添加了新函數,並且我想我正確地傳遞了結構,但是我在 void function1(struct Inventory inv){告訴我參數1(inv)具有不完整類型時出錯。請幫忙!C - 傳遞結構+值的成員

#include <stdio.h> 
#include <conio.h> 
#include <stdlib.h> 

void function1(struct Inventory inv); 

struct Inventory{ 
    char name[20]; 
    int number; 
    float price; 
    float total; 
} 

void main(){ 

    items; 

    void function1(items); 

    float total = items.number*items.price; 
    printf("Item\tNumber\tPrice\tTotal\tAddress of number\n"); 
    printf("%s\t%d\t%.2f\t%.2f\t%X\n\n",items.name,items.number,items.price,total,&items.number); 

    getch(); 
} 

void function1(struct Inventory inv) { 

    printf("Enter the name of the item: "); 
    scanf("%s", inv.name); 

    printf("Enter the number of items: "); 
    scanf("%d", &inv.number); 

    printf("Enter the price of each item: "); 
    scanf("%f", &inv.price); 
} 
+2

這是你在這個網站已經第三個問題。在發佈任何內容之前,請*學習縮進您的代碼。 – 2014-11-23 22:43:20

+0

按值傳遞任何非基元類型是低效和毫無意義的。學習使用指針。 – Havenard 2014-11-23 22:59:04

+0

我的猜測是,它教會了我通過價值傳遞和參照傳遞之間的差異。儘管指針是最好的選擇。 – steeele 2014-11-23 23:31:42

回答

1

您必須在您的函數原型中使用它之前定義您的結構。

struct Inventory{ 
char name[20]; 
int number; 
float price; 
float total; 
}items; 

void function1(struct Inventory inv);