结构体和共用体(C语言)

一、结构体和共用体的定义

结构体关键字为struct,共用体关键字为union数组

/**
*    定义一个person的结构体,要';'结束
*/
struct person{
    char name[20];        //姓名
    char sex[10];         //性别
    int age;              //年龄
    float height;         //身高
    float weight;         //体重   
};

/**
*    定义一个people共用体
*/
union people{
    char name[20];
    int age;
};

二、结构体和共用体的声明markdown

结构体和共用体的三种声明是一致的:ide

void mian(){
    //结构体的声明

    //通常声明
    struct person p1;
    union people pe1;

    //直接声明
    struct person{
        char name[20];
        int age;
    }p2;
    union people{
        char name[20];
        int age;
    }pe2;

    //匿名声明,此方式该结构体只能声明一次
    struct{
        char name[20];
        int age;
    }p3;
    union{
        char name[20];
        int age;
    }pe3;

}

三、结构体和结构体变量的使用函数

3.一、对结构体成员的使用指针

/**
*    定义一个结构体,并声明结构体对象p1
*/
struct person{
    char name[20];
    int age;  
}p1;

void main(){
    //初始化结构体
    p1 = {"zack", 20};

    //访问结构体成员的三种方法

    //一、结构体变量名.成员名    p1.name
    printf("%s", p1.name);

    //二、指针变量名->成员名    

    //三、(*指针变量名).成员名
}

四、结构体变量的初始化code

前面已经了解了如何赋值,而后弄一个稍微复杂一点的结构体赋值:对象

/**
*    定义一个生日的结构体
*/
struct birthday{
    int year;
    int month;
    int day;
};

/**
*    定义一个person结构体,以结构体birthday做为成员变量
*/
struct person{
    char name[20];
    int age;
    struct birthday date;
}p;

void main(){
    //初始化person,若是成员变量为结构体,使用{}赋值
    p = {"zack", 20, {1999, 12, 1}};
}

五、结构体数组定义及初始化内存

/**
*    定义结构体并声明数组
*/
struct person{
    char name[20];
    int age;
}p[2];

void main(){
    //初始化结构体数组    
    p = {{"zack", 20}, {"Rudy", 19}};
}

六、结构体和函数get

结构体能够做为函数参数it

/**
*    定义一个结构体
*/
struct person{
    char name[20];
    int age;
};

/* 声明一个函数 */
void demo(struct person p);
void main(){
    //初始化结构体
    struct person p = {"zack", 20};
    //将结构体做为参数传入demo函数    
    demo(p);
}

/**
*    定义一个函数,接收结构体,并把结构体信息输出
*/
void demo(struct person p){
    printf("姓名:%s\n", name);
    printf("年龄:%d", age);
}

七、结构体和共用体的区别

结构体在建立时,按照结构体成员变量占的内存分配。而共用体则按照共用体中,所占内存最大的变量分配内存。因此,共用体变量只能单个使用,而结构体能够全部变量一块儿使用。
https://mp.weixin.qq.com/s/THf1-T8A2RaoF1xIQ4No1A

相关文章
相关标签/搜索