我已在单独的头文件中定义了结构,并且已将该头文件包含在我的主文件中。
头文件包含如下结构:
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
答案 1 :(得分:0)
在C中,struct
由初始值设定项
NUMBER_TWO a2 = { .variable5 = 7, .variable6 = { 'a', }, };
我在这里给出的形式是所谓的指定初始化器,它以C99开头。 Oldish C只有等价的
NUMBER_TWO a2 = { 7, { 'a' } };
您必须在声明顺序中指定值。
对于这两种形式,初始化程序中省略的字段都使用0
进行初始化。