2013-12-12 156 views
-1

的結構元件我已經定義在一個單獨的頭文件中的結構和我已經包含在我的主文件,該文件的頭文件。分配內存和填充結構

頭文件由這樣的結構:

typedef struct 
{ 
char name[32]; 
unsigned int a; 
unsigned int b; 
NUMBER_ONE variable1; 
NUMBER_TWO variable2; 
}NUMBER_THREE,*PNUMBER_THREE; 


typedef struct 
{ 
unsigned int variable3; 
char variable4[8]; 
}NUMBER_ONE,*PNUMBER_ONE; 


typedef struct 
{ 
unsigned int variable5; 
char variable6[8]; 
}NUMBER_TWO,*PNUMBER_TWO; 

現在在我的主文件我必須爲這個結構分配內存,我需要填寫這個結構的一些值,所以任何人都請告訴我這個怎麼做。我需要通過套接字客戶端發送到套接字服務器。

+0

什麼你不知道該怎麼辦? –

回答

0

如果你已經在你目前它的順序寫的,那麼代碼甚至不應該編譯,因爲到達第一個typedef有什麼NUMBER_ONE或NUMBER_TWO類型是毫無頭緒。

要分配它應該只是以定義給定類型的變量。

int main() 
{ 
NUMBER_TWO number_two_var; 
number_two_var.variable5 = 10; 

} 

我也建議對每個typdef使用一個後綴,例如NUMBER_TWO_T。

編輯:Postfix的是_T

+0

使用初始值設定項初始化變量,這就是它們的作用,而不是賦值。初始化器具有額外的功能,它們將所有其他字段設置爲「0」,這是一個重要的保證。 –

0

在C struct由初始化

NUMBER_TWO a2 = { .variable5 = 7, .variable6 = { 'a', }, }; 

我在這裏給形式來開始C99所謂的指定初始化初始化是。 Oldish C只有相當的

NUMBER_TWO a2 = { 7, { 'a' } }; 

您必須在聲明順序中指定值。

對於這兩種形式,即從初始化省略字段初始化與0