結構體的格式:
struct 型別名
成員列表;
變數名列表;
也可以直接定義乙個結構體變數:
struct
成員列表;
變數名列表;
下面用乙個程式將結構體的使用演示:
#include
#include
struct student //定義結構體
char name[20];
struct //內嵌結構體,不用類名,所以說用的是變數形式的結構體
int year;
int month;
int day;
}birthday;
char ***;
int main()
struct student data[2]; //定義結構體變數
struct student *p=data; //定義結構體指標
strcpy(p->name,"tan"); //初始化,為資料直觀,不用使用者輸入的方式
p->birthday.year=1990;
p->birthday.month=12;
p->birthday.day=29;
p->***='b';
strcpy((p+1)->name,"zhu");
(p+1)->birthday.year=1990;
(p+1)->birthday.month=10;
(p+1)->birthday.day=25;
(p+1)->***='g';
//這裡有用箭頭和用點的問題,一條原則,只要是指標就用箭頭,其他就用點來表示成員
printf("the first person is:%s %d %d %d %c\n",p->name,p->birthday.year,p->birthday.month,p->birthday.day,p->***);
printf("the second person is:%s %d %d %d %c\n",(p+1)->name,(p+1)->birthday.year,(p+1)->birthday.month,(p+1)->birthday.day,(p+1)->***);
return 0;
上面用的結構體,內嵌結構體,還有結構體類和結構體變數,結構體的定義初始化到處理使用、輸出,進行了大概的操作。至於鍊錶和順序表這一塊知識點,這裡不做展開,在資料結構中會有詳細的說明。
首先進行說明,為節約記憶體或便於對資料進行處理,c語言允許在乙個儲存單元中(先後)存放不同型別的資料,或者在該儲存單元中以某種型別存放資料,而以另外型別訪問該資料,這種儲存單元的特殊資料型別稱為共用體型別,也叫做聯合型別。
共用體用的是同乙個記憶體,因此某個時刻只能保持某乙個成員的資料,當乙個成員的資料發生改變時,其他成員的資料也發生了變化,部分或全部被覆蓋。表面上和結構體用法差不多,但是這個差別卻說出了實質上的東西。下面乙個簡單的程式的輸出就可以驗證以上觀點:
#include
union data
int a;
char b;
int main()
union data temp;
temp.a=1111;
temp.b='r';
printf("%d\n",temp.a);
printf("%d\n",temp.b);
return 0;
結構:enum 型別名 {識別符號序列};
例如:enum color;
列舉值識別符號自動賦值給他們0,1,2,3,4,5
假如enum color;
那麼yellow就是4,自動順延。
以下程式用於舉例具體的使用:(比較簡單,不寫注釋)
#include
int main()
enum dayx;
scanf("%d",&x);
switch(x)
case mon:
case tue:
case wed:
case thu:
case fri:printf("work day!\n");break;
case sat:
case sun:printf("rest day!\n");break;
default:printf("error!\n");
return 0;
使用者自定義結構體為例,相當於這麼理解,是自定義的結構體,格式如下:
typedef struct
}student;
student a,b,c;
這麼一看就知道是什麼意思了,typedef a b;相當於是把a部分用b自定義的b部分來代替,typedef int asdl;的話,asd就有等同int的功能,可以定義整型,就是這個意思,這個和巨集定義#define又有差別,而且後者是沒有分號結尾的,注意差別。
關於位運算在先前的介紹中已經提及,而且已經簡潔明瞭,不需要再介紹。
結構體 共用體與列舉
part 1 一 結構體型別與程式設計應用 學生的記錄由學號和成績組成。n名學生的資料已在主函式中放入結構體陣列stu中。編寫函式 ndminlist,實現 把分數低的學生資料放在陣列t中,函式返回分數低的學生的人數。注意 分數低的學生可能不止乙個 include const int n 5 定義結...
結構體 共用體 列舉
結構體 共用體 列舉 分析 首先宣告的結構體元素year的位址是最低的 0012ff74 而最後宣告的day的位址是最高的 0012ff7c 而我們又知道在棧中宣告變數的時候,位址是從高到低的分配的.因此,切記在結構體中宣告的變數與直接在外面宣告是不一樣的.在結構體中,最先宣告的變數放在最低位的.另...
列舉,結構體,共用體
列舉的定義 enum log level dbg,inf,war,err,fat,all,offvoid writeinfor log level level switch level case dbg printf d n dbg 上述定義的列舉型別,預設為dbg 0,inf 1,依次類推。1 列...