C语言里面结构体初始化

对一个结构体型的自动(automatic)变量内部的域进行一次性初始化

struct s1
{
  char *s;
  int i;
  struct s1 *p;
};


struct s1 a[] = { {"hello", 1, a}, {"C", 2, a+1}, {"C++", 3, a+2} };  
<script type=text/javascript> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript> </script>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C语言中,结构体初始化可以通过几种方式进行。 第一种方式是顺序初始化,即按照结构体定义的顺序给成员变量赋值。例如,定义了一个名为serial的结构体类型serial_hard_config_def,可以通过以下方式进行初始化: serial_hard_config_def serial = { 115200, 8, 1, 0, 0 }; \[1\] 第二种方式是定义时赋值,即在定义结构体变量的同时给成员变量赋值。例如,定义了一个名为test的结构体类型InitMember,可以通过以下方式进行初始化struct InitMember test = {-10,3.141590,"method one",0.25}; \[2\] 如果要声明结构体数组,可以采用表驱动型写法,结合枚举类型来定义。例如,定义了一个名为block的结构体类型,以及一个名为motor的结构体数组,可以通过以下方式进行初始化: typedef struct block { char name\[32\]; int type; int size; }block; enum{ ENUM_NAME, ENUM_TYPE, ENUM_SIZE, ENUM_MAX }; const block motor\[ENUM_MAX\] = { \[ENUM_NAME\] = { .name = "version", .type = 1, .size = 32 }, \[ENUM_TYPE\] = { .name = "device", .type = 2, .size = 16 }, \[ENUM_SIZE\] = { .name = "firmware", .type = 3, .size = 8 }, }; \[3\] 总结起来,在嵌入式开发中,推荐使用方法3对结构体进行初始化。而对于结构体数组,可以采用方法3结合枚举类型的方式进行初始化,这在大型项目中比较常见。 #### 引用[.reference_title] - *1* [C语言结构体初始化的几种方法](https://blog.csdn.net/u011029104/article/details/124611971)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [C语言结构体初始化的四种方法](https://blog.csdn.net/wwwguojiang/article/details/109201961)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [结构体初始化的四种方法](https://blog.csdn.net/fly_wt/article/details/121434848)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值