2016-03-02 45 views
-2

如何在其他typedef struct中聲明typedef struct另一個typedef中的typedef結構格式struct

typedef struct { 
    char* type; 
    char* destination; 
    float price; 
    typedef struct { 
     int date; 
     int month; 
     int year; 
    }date; 
}Offer; 

我試過類似的東西,但我不知道它是否正確。我想在typedef struct中聲明日期格式的另一個typedef結構體。

回答

1

而不是你寫的,讓我們嘗試這樣的事:

typedef struct { 
    int date; 
    int month; 
    int year; 
} OfferDate; 


typedef struct { 
char* type; 
char* destination; 
float price; 
OfferDate date; 
} Offer; 
+0

而且,我怎麼能在這個函數實現日期:'要約創建(的char *類型,字符*目的地,浮動價格, DATE);'? – Kaiac

+0

'提供創建(char *類型,char *目的地,浮動價格,OfferDate日期);'@CristianTimar像這樣。 – Shark

+0

我參考了c書的一部分,但我急需這個指導。謝謝 ! – Kaiac

2

試試這個:

typedef struct { 
    char* type; 
    char* destination; 
    float price; 
    struct { 
    int day; 
    int month; 
    int year; 
    } date; 
} Offer; 

date定義爲匿名結構的。如果您需要在其他地方使用此結構,請使用Shark's approach

+0

剛剛添加到我的答案作爲替代。 :) – Shark

+0

@CristianTimar:'提供創建(字符*類型,字符*目的地,浮動價格,INT天,INT月,INT年);'? – alk

+0

他實際上在問如何構造對象,使用該方法簽名 - 您需要告訴他如何將「day」,「month」和「year」分配給要返回的結構。由於它是匿名的,它不能作爲參數傳遞。這是他沒有得到的部分,該怎麼辦'Offer.date.day = ;' – Shark

0

那是不正確的語法。如果你想使用另一種結構來定義結構,你可以做這樣的:

typedef struct { 
    int a1; 
    int a2; 
} ExampleStruct1; 

typedef struct { 
    int b1; 
    ExampleStruct1 b2; 
} ExampleStruct2;