zoukankan      html  css  js  c++  java
  • C语言结构体初始化的四种方法(转载)

     原文:https://blog.csdn.net/ericbar/article/details/79567108

    定义

    struct InitMember
    {
        int first;
        double second;
        char* third;
        float four;
    };

    方法一:定义时赋值

    struct InitMember test = {-10,3.141590,"method one",0.25};

    需要注意对应的顺序,不能错位。

    方法二:定义后逐个赋值

    struct InitMember test;
    
    test.first = -10;
    test.second = 3.141590;
    test.third = "method two";
    test.four = 0.25;

    因为是逐个确定的赋值,无所谓顺序啦。

    方法三:定义时乱序赋值(C风格)

    这种方法类似于第一种方法和第二种方法的结合体,既能初始化时赋值,也可以不考虑顺序;

    struct InitMember test = {
        .second = 3.141590,
        .third = "method three",
        .first = -10,
        .four = 0.25
    };

    这种方法在Linux内核kernel)中经常使用,在音视频编解码库FFmpeg中也大量频繁使用,还是很不错的一种方式。

    方法四:定义时乱序赋值(C++风格)

    这种方法和前一种类似,网上称之为C++风格,类似于key-value键值对的方式,同样不考虑顺序。

    struct InitMember test = {
        second:3.141590,
        third:"method three",
        first:-10,
        four:0.25
    };

    写在后面

    其实问题的引出是在分析FFmpeg源代码时,发现大量的结构体乱序赋值初始化的方式,以前在C语言教材上没有发现这种用法,于是学习总结一下,放到这里存档。

  • 相关阅读:
    前端 HTML
    python3内置函数
    内置函数的随机验证码
    线程、进程以及协程,上下文管理器
    线程池的定义方法
    python_控制台输出带颜色的文字方法
    while 循环 continue break 用法例子
    JVM 基础知识
    ios 设置状态栏文本颜色为白色
    ios 常用第三方库要加的framework,ARC的设置
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/10332749.html
Copyright © 2011-2022 走看看