結構體和共用體(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

相關文章
相關標籤/搜索