C的純數據類型是char int float 像是數組屬於聚合數據類型,C的聚合數據類型主要有兩種,數組和結構。數組是相同類型的數據結合,結構式可以允許不同類型數據結合。數組是通過下標訪問的,而結構是通過名字訪問的。
常用的定義方式。
1、先定義結構體類型,再定義結構體類型變量
struct 結構名
{
成員表列
};
2、定義結構體類型同時定義結構體類型變量
struct 結構名
{
成員表列
} 類型名 ;
3、直接定義結構體類型變量
struct
{
成員表列
}結構體類型變量;
還有一種就是通過 typedef 做一個類型。
4、
typedef struct 結構名
{
成員表列
} 類型名 ;
代碼
#include <stdio.h>
struct student
{
char name[10];
int age;
};
typedef struct teacher
{
char name[10];
int age;
}tea;
int main(void)
{
struct student li = {"xiaoli", 16};
tea zhang = {"mr zhang", 30};
printf("李學生的名字%s,年齡%d\n", li.name, li.age);
printf("張老師的名字%s,年齡%d\n", zhang.name, zhang.age);
return 0;
}
執行結構
還有一種叫枚舉
有的變量只有幾種可能取值。
定義一個變量是枚舉類型,可以先定義一個枚舉類型名,然後再說明這個變量是該枚舉類型。
例如:
enum weekday{sun,mon,tue,wed,thu,fri,sat};
定義了一個枚舉類型名 enum weekday,然後定義變量爲該枚舉類型。例如:
enum weekday day;
也可以在定義的時候賦值
代碼
#include <stdio.h>
enum weekday{sun=7, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6};
int main(void)
{
printf("星期天的代碼是%d\n", sun);
printf("星期一的代碼是%d\n", mon);
printf("星期二的代碼是%d\n", tue);
printf("星期三的代碼是%d\n", wed);
printf("星期四的代碼是%d\n", thu);
printf("星期無的代碼是%d\n", fri);
printf("星期六的代碼是%d\n", sat);
return 0;
}
執行效果
共用體也叫聯合,聲明和結構類似,意思是引用相同內存空間的相同位置。你可以把不同的東西存在同一個位置。
union
{
類型定義 變量;
類型定義 變量;
}枚舉名;
代碼
#include <stdio.h>
union
{
char str1[2][2];
char str2[4];
}num;
int main(void)
{
int i, j;
printf("num佔的空間%d\n", sizeof(num));
for(i=0; i<4; i++)
{
num.str2[i] = i;
}
for(i=0; i<2; i++)
for(j=0; j<2; j++)
printf("數據是%d\n", num.str1[i][j]);
return 0;
}
執行結果