結構體,共同體,枚舉

結構體

概念及定義

  • 概念
    結構體是一種構造類型的數據結構。
    是一種或者多種基本類型或者構造類型的數據集合。
  • 定義(三種定義方法)
    // 結構體 定義方法一
    struct person
    {
        char name[10];
        int age;
    };
    
    // 結構體 定義方法二
    typedef struct
    {
        char name[10];
        int age;
    } PERSON;
    
    // 結構體 定義方法三
    struct teacher
    {
        char name [10];
        int age;
    } teacher1, teacher2;
    
    int main(int args, char *argc[])
    {
        // 賦值一
        struct person p = {"zhangsan", 10};
        PERSON p1 = {
            "lisi",
        };
        // 賦值二
        teacher1.age = 10;
        // teacher1.name = "hello"; // 錯誤
    	strcpy(teacher1.name,"hello");
    	printf("teacher1:{age:%d,name:%s} \n",teacher1.age,teacher1.name);
    	// teacher1:{age:10,name:hello}
    
        system("pause");
        return 0;
    }
    

結構體數組

有若干個相同類型的結構體變量組成的集合

struct teacher teachers [2] = {
       {"zs",10},
       {"ww",11}
   };
printf("teacher[1]:{name = %s,age = %d} \n",teachers[1].name,teachers[1].age);
//teacher[1]:{name = ww,age = 11}
struct teacher teacher3 = {"zhangsan",18};
teachers[0] = teacher3;
printf("teacher3:{name = %s,age = %d} \n",teacher3.name,teacher3.age);
// teacher3:{name = zhangsan,age = 18}

結構體指針

struct teacher *teacher = &teacher1;
strcpy((*teacher).name, "hello");
(*teacher).age = 10;
printf(" * teacher = {%s,%d} \n", (*teacher).name, (*teacher).age);
//  * teacher = {hello,10}
printf(" * teacher = {%s,%d} \n", teacher->name, teacher->age); // 指向運算符 ->
//  * teacher = {hello,10}
// 結構體中的結構體
struct teacher teacher2 = {"as", 15, {"hh", 10}};
struct teacher *teacher3 = &teacher2;
printf("* teacher = {%s,%d,{%s,%d}} \n", teacher3->name, teacher3->age, teacher3->p.name,teacher3->p.age);
// * teacher = {as,15,{hh,10}}

共同體

共同體和結構體類似,定義的方法也類似,即將struct改成union
整體的空間大小由佔最大空間的元素決定。

枚舉

enum 枚舉類型名稱{
	枚舉值列表;
};
// 在枚舉值列表中應列出所有可用值,也稱爲枚舉元素。
// 枚舉變量只能取枚舉值所列元素。

enum NumberDemo{
    ONE,
    TWO,
    THREE
};
enum NumberDemo nd;

int main(int args, char *argc[])
{
    nd = ONE;
    printf("%d \n",nd);   //0 

    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章