struct数组元素初始化

时间:2016-07-04 15:39:44

标签: c arrays initialization structure element

我如何使用这些值在结构下面初始化:

struct test_str {
unsigned char Add[6];
unsigned int  d;
unsigned char c;
}my_str;

我尝试了这个,但导致了错误:

struct test_str {
unsigned char Add[6];
unsigned int  d;
unsigned char c;
}my_str {.Add[0]=0x11,.Add[0]=0x22,.Add[0]=0x33,
         .Add[0]=0x44,.Add[0]=0x55,.Add[0]=0x66,
         .d=0xffe,.c=10};

1 个答案:

答案 0 :(得分:3)

在现代C ++ 11或更高版本中(因为您的问题最初仅标记为C ++),您拥有所谓的aggregate initialization。它的工作原理如下:

struct test_str {
    unsigned char Add[6];
    unsigned int  d;
    unsigned char c;
} my_str { {0x11,  0x22, 0x33, 0x44, 0x55, 0x66},
            0xffe, 
            10
         };

int main()
{}

Live on Coliru

内部支撑并不是必需的,但为了清楚起见,我更喜欢它。

PS:你应该得到一个很好的介绍C++ book,这样你就可以学习语言的基础知识。

修改

在C中(当您重新标记您的问题时)和C ++ 11之前,您需要一个等号。此外,在C中,内括号不是可选的:

struct test_str {
    unsigned char Add[6];
    unsigned int  d;
    unsigned char c;
} my_str = { {0x11,  0x22, 0x33, 0x44, 0x55, 0x66},
             0xffe, 
             10
           };

int main()
{}