精华内容
下载资源
问答
  • C语言结构体初始化的四种方法

    万次阅读 多人点赞 2018-03-15 17:17:19
    定义 struct InitMember { int first; double second; char* third; float four; }; 方法一:定义时赋值 struct InitMember test = {-10,3.141590,"...方法二:定义后逐个...

    定义

    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 = {
        second3.141590,
        third"method three",
        first:-10,
        four:0.25
    };

    写在后面

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

    展开全文
  • C语言结构体初始化

    千次阅读 2018-11-06 19:32:26
    C语言结构体初始化

    首先定义一个结构体:

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

    一、定义时赋值

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

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

    二:定义后逐个赋值

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

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

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

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

    这种方法在Linux内核(kernel)中经常使用,是很不错的一种方式。

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

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

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

    总结

    个人比较喜欢第三和第四中方法,首先这样写代码比较紧凑,其次初始化与顺序无关,且初始化的时候是直接对对应成员变量赋值,出错率低。

    展开全文
  • C语言结构体初始化教程在C语言结构体初始化语法struct structName varName = {fileldValue1, fileldValue2, fileldValue3};参数参数描述struct结构体的关键字。structName结构体名。varName结构体变量名。...

    C语言结构体初始化教程

    C语言结构体初始化

    语法

    struct structName varName = {fileldValue1, fileldValue2, fileldValue3};

    参数

    参数

    描述

    struct

    结构体的关键字。

    structName

    结构体名。

    varName

    结构体变量名。

    fileldValue1

    结构体第一个字段对应的初始化值。

    fileldValue2

    结构体第二个字段对应的初始化值。

    fileldValue3

    结构体第三个字段对应的初始化值。

    说明

    我们分别使用了 fileldValue1 来初始化了结构体 varName 中的第一个字段的值,使用了 fileldValue2 来初始化了结构体 varName 中的第二个字段的值,fileldValue3 来初始化了结构体 varName 中的第三个字段的值。

    使用这种方式初始化,我们只能按照顺序一个个的初始化结构体的成员。

    C语言初始化结构体成员

    语法

    struct structName varName = {

    .filed1 = value1,

    .filed2 = value2,

    .filed3 = value3

    };

    说明

    我们分别使用了 value1 来初始化了结构体 varName 中的 filed1 字段,使用了 value2 来初始化了结构体 varName 中的 filed2 字段,value3 来初始化了结构体 varName 中的 filed3 字段。

    使用这种方式初始化,我们可以按照任意的顺序初始化结构体的成员。

    注意

    使用这种方式初始化结构体成员使用的是 .filed1 = value1 的形式,且除了最后一个成员,其他的每一个成员的最后都要加一个逗号,即 ,。

    最后一个成员不可以加逗号。

    C语言初始化结构体成员

    语法

    struct structName varName = {

    filed1 : value1,

    filed2 : value2,

    filed3 : value3

    };

    说明

    我们分别使用了 value1 来初始化了结构体 varName 中的 filed1 字段,使用了 value2 来初始化了结构体 varName 中的 filed2 字段,value3 来初始化了结构体 varName 中的 filed3 字段。

    使用这种方式初始化,我们可以按照任意的顺序初始化结构体的成员。

    注意

    使用这种方式初始化结构体成员使用的是 filed1 : value1 的形式,且除了最后一个成员,其他的每一个成员的最后都要加一个逗号,即 ,。

    最后一个成员不可以加逗号。

    案例

    C语言顺序初始化结构体成员

    顺序初始化结构体中的成员

    #include

    struct Car{

    char *brand;

    int price;

    int maxSpeed;

    };

    void main(){

    printf("嗨客网(www.haicoder.net)\n\n");

    struct Car car = {"Benz", 100000, 256};

    char *brand = car.brand;

    int price = car.price;

    int maxSpeed = car.maxSpeed;

    printf("Init Brand = %s, Price = %d, MaxSpeed = %d\n", brand, price, maxSpeed);

    }

    程序运行后,控制台输出如下图所示:

    4e55ebdf509159585fb2157f38e6eb0d.png

    我们首先,定义了一个结构体 Car,该结构体有三个成员,即一个

    接着,我们使用了顺序初始化的方式,初始化了结构体 car 的三个成员,即分别将结构体 car 的 brand 字段初始化为 “Benz”、结构体 car 的 price 字段初始化为 100000、结构体 car 的 maxSpeed 字段初始化为 256。

    C语言乱序初始化结构体成员

    乱序初始化结构体中的成员

    #include

    struct Car{

    char *brand;

    int price;

    int maxSpeed;

    };

    void main(){

    printf("嗨客网(www.haicoder.net)\n\n");

    struct Car car = {

    .price = 900000,

    .maxSpeed = 400,

    .brand = "Benz"

    };

    char *brand = car.brand;

    int price = car.price;

    int maxSpeed = car.maxSpeed;

    printf("Init Brand = %s, Price = %d, MaxSpeed = %d\n", brand, price, maxSpeed);

    }

    程序运行后,控制台输出如下图所示:

    3e8bd638654d9a9f065ba619d6bfe720.png

    这次,我们在结构体里面,通过 “.FileldName” 的形式初始化了结构体的成员,使用这种方式初始化结构体的成员,不需要按照顺序,只需要在前面写上我们需要初始化的字段名即可。

    最后,我们使用

    C++风格结构体初始化

    使用 C++ 风格来初始化结构体成员

    #include

    struct Car{

    char *brand;

    int price;

    int maxSpeed;

    };

    void main(){

    printf("嗨客网(www.haicoder.net)\n\n");

    struct Car car = {

    price : 900000,

    maxSpeed : 400,

    brand : "Benz"

    };

    char *brand = car.brand;

    int price = car.price;

    int maxSpeed = car.maxSpeed;

    printf("C++ Style Init Brand = %s, Price = %d, MaxSpeed = %d\n", brand, price, maxSpeed);

    }

    程序运行后,控制台输出如下图所示:

    1004b9bf1a45dca6a0c87bbcf3577d14.png

    这次,我们使用了 C++ 风格来初始化了结构体的成员。

    C语言结构体初始化总结

    在 C 语言中,我们要初始化一个结构体,有三种方法,即,顺序初始化、乱序初始化和 C++ 风格的初始化。

    展开全文
  • C语言结构体初始化 C语言结构体初始化有以下4种方法: 1、定义后初始化 typedef struct { int* age; int* height; int weight; }Student; void main() { int a = 10, b = 12; Student stu1; stu1.age = &...

    C语言结构体初始化

    C语言结构体初始化有以下4种方法:

    1、定义后初始化

    typedef  struct 
    {
        int* age;
        int* height;
        int weight;
    
    }Student;
    
    void main()
    {
        int a = 10, b = 12;
        Student stu1;
        stu1.age = &a;
        stu1.height = &b;
        stu1.weight = 80;
    }
    

    2、定义时按序初始化

    typedef  struct 
    {
        int* age;
        int* height;
        int weight;
    
    }Student;
    
    void main()
    {
        int a = 10, b = 12;
        Student stu2 = {&a, &b, 40};
    }
    

    3、定义时乱序初始化(C语言风格),初始化顺序声明顺序可以不一致

    typedef  struct 
    {
        int* age;
        int* height;
        int weight;
    
    }Student;
    
    void main()
    {
        int a = 10, b = 12;
        Student stu3 = {
            .weight = 20,     //与声明顺序可以不一致
            .age = &a,
            .height = &b
        };
    }
    

    4、定义时乱序初始化(C++风格),初始化顺序声明顺序可以不一致

    typedef  struct 
    {
        int* age;
        int* height;
        int weight;
    
    }Student;
    
    void main()
    {
        int a = 10, b = 12;
        Student stu4 = {
            height : &a,     //与声明顺序可以不一致
            age : &b,
            weight : 50
        };
    }
    
    展开全文
  • C语言结构体初始化的三种方法直接上示例了#include struct student_st{char c;int score;const char *name;};static void show_student(struct student_st *stu){printf("c = %c, score = %d, name = %s\n", stu->...
  • C语言结构体初始化 定义: struct 结构体名 { //成员列表 类型名 成员名 } //变量列表 使用 “.” ,调用结构体各项成员,完成基本操作 结构体数组初始化 #include<iostream> using ...
  • C语言结构体初始化的四种方法 ericbars 2018-03-15 17:17:19 160301 收藏 183 分类专栏: 技术基础 文章标签: 结构体初始化 C语言 版权 定义 struct InitMember { int first; double second; char* third; ...
  • c语言结构体学习整理(结构体初始化,结构体指针)

    万次阅读 多人点赞 2018-11-01 20:22:12
    c语言中交换两个结构体的值(结构体指针) 1关于语言的结构体: 首先我们为什么要用到结构体,我们都已经学了很多int char …等类型还学到了同类型元素构成的数组,以及取上述类型的指针,在一些小应用可以灵活...
  • C语言结构体常规初始化2. 新get到的方法 1. C语言结构体常规初始化 typedef struct time { uint8 hour; uint8 minute; uint8 second; }TIME_STR; main() { time start_time; //设置初始时间为:13:14:22 ...
  • 结构体作为数据结构的基础,经常使用,其中初始化也有几种方法,这里详细介绍 二、常规初始化(先定义再初始化) typedef struct { int bandrate; int databits; int stopbits; int parity; int dtr; }serial_...
  • C语言结构体初始化和结构体指针

    千次阅读 2018-06-28 10:31:01
    结构体初始化#include <stdio.h> //结构体的声明和定义方法 //1.声明和定义分离 struct weapon{ char name[20]; int atk; int price; }; //声明 //定义 struct weapon weapon_1; //==============...
  • C语言结构体初始化的小技巧

    千次阅读 2019-12-21 10:53:44
    我们使用C去新建结构体变量时,如果这个变量是局部变量,那么其成员变量的默认初始值就是随机值,所以一般在创建变量时会对其成员的值进行初始化。下面举例说明这个过程, 一 常规初始化 假设结构体类型定义如下, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 57,152
精华内容 22,860
关键字:

c语言结构体初始化

c语言 订阅