結構體
概念及定義
- 概念
結構體是一種構造類型的數據結構。
是一種或者多種基本類型或者構造類型的數據集合。 - 定義(三種定義方法)
// 結構體 定義方法一 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;
}