结构体的初始化

    技术2022-05-19  20

    早先在看开源代码中学到的一个初始化结构体的技巧,今天刚刚用上。 特意整理了一下。

    struct _A{ int a; int b;}

    早先我所采用的方法(方法一)struct _A A = {0};A.a = 1;A.b = 2;

     

    现在所采用的方法(方法二),是从开源代码中所学会的, 定义结构体的同时初始化结构体成员变量

    struct _A A = {.a = 1, .b = 2};

    相比较方法一, 方法二明显简洁,清晰明了,唯一的不足之处在于增加了学习的成本,但我想这也是完全可以接受的。

     

    PS:反汇编了一下两者的代码, 证明了我的猜想方法二的执行效率也明显高于方法一。我不是效率偏执流,对我来说,程序的可读性,可维护性更为重要。

    贴一下方法一的汇编代码。

    struct _A { int a; int b; }; int fun() { struct _A aaa = {0}; aaa.a = 1; aaa.b = 2; return 0; }

     

     

    .file "fun1.c" .text .globl fun .type fun, @function fun: pushl

    转载请注明原文地址: https://ibbs.8miu.com/read-2205426.html

    最新回复(0)