2013-12-09 82 views
0

我有一個結構:的結構的大小

typedef struct { 
    char fname[100], lname[100]; 
    int age, salary; 
} *employer; 

而現在,我想變empl1的指針,它包含了足夠的空間爲100名員工:

employer empl1 = malloc(100 * sizeof(employer)); 

的問題是, sizeof(僱主)(我的機器上的指針的大小)。 我如何得到所有僱主的大小結構? (我的情況是208)。

回答

5

你有一個無效(站不住腳)使用typedef struct,S/B typedef struct ... employer;(沒有星號/指針)

我也建議你這樣做:

typedef struct { 
    char fname[100]; 
    char lname[100]; 
    int age; 
    int salary; 
} employer; 
+0

所以這是錯誤的像我一樣嗎? –

+1

是的,你的typedef不應該解析爲一個指針(並且通常在你的結構中鍵入每個項)。 – KevinDTimm

+1

類型定義在語法上是有效的(它創建一個沒有名字的結構類型,只有從它派生的指針類型纔有名稱)。但我在「不要typedef指針」陣營,所以我同意這是一個壞主意。 –