分配内存并填充结构的结构元素

时间:2013-12-12 07:44:13

标签: c struct

我已在单独的头文件中定义了结构,并且已将该头文件包含在我的主文件中。

头文件包含如下结构:

 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;

现在在我的主文件中我必须为这个结构分配内存,我需要用一些值填充这个结构,所以任何人都请告诉我如何做到这一点。我需要通过套接字客户端将其发送到套接字服务器。

2 个答案:

答案 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

答案 1 :(得分:0)

在C中,struct由初始值设定项

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

我在这里给出的形式是所谓的指定初始化器,它以C99开头。 Oldish C只有等价的

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

您必须在声明顺序中指定值。

对于这两种形式,初始化程序中省略的字段都使用0进行初始化。