首先是宣告struct的方法,分別有兩種方式首先講第一種(struct):
假設現在要宣告一個student的一個結構(struct),裡面包含學生的學號(id)以及年紀(age)可以這樣子寫=====>
struct Student{ //定義
int id;
int age;
};
而使用的寫法如下===>
struct Student stu[2]; //宣告
stu[0].id=903135; //給值
stu[0].age=19;
stu[1].id=903137;
stu[1].age=20;
再講第二種寫法之前,稍微說明一下typedef這個東西,它的用法如下:
typedef int _Uint32; //把_Uint32這個字串定義為等同於int
_Uint32 i=0; //用_Uint32宣告整數變數
我相信大家對這種用法都滿熟悉的~
接下來如果使用第二種(typedef struct)的方式的話:
是這樣子寫的====>
typedef struct{ //定義
int id;
int age;
}Student;
上面的寫法可以看成Student被定義成是種struct型態(Student代表struct Student),並且成員有id與age。
因此使用的方式是這樣子寫的====>
Student stu[2]; //宣告
stu[0].id=903135; //給值
stu[0].age=19;
stu[1].id=903137;
stu[1].age=20;
也可以寫成這樣:
Student stu[2] = {
{903135, 19},{903137, 20}
}
====================分隔線======================
另外一個Topic是struct給值的方法,上面的給值方式是我們比較常看到的,另外還有一種進階的寫法,是這樣子寫的====>
struct Student{ //定義
int id;
int age;
};
struct Student stu[2]=
{
[0]={
.id=903135,
.age=19,
},
[1]={
.id=903137,
.age=20,
},
}
**注意這種寫法式宣告同時就給值,給值的部分都是用逗號區隔喔(不是分號哦)!**
以下程式是實作的範例
//================= struct_example.c =================//
#include <stdio.h>
struct staff
{
int id;
int age;
};
typedef struct
{
int id;
int age;
}student;
int main()
{
int i;
// ==========================================
// struct first define usage
struct staff sta[2]=
{
[0]={
.id=100001,
.age=22,
},
[1]={
.id=100002,
.age=23,
},
};
// ==========================================
// ==========================================
// struct another define usage
student stu[2]={
[0]={
.id=903135,
.age=19,
},
[1]={
.id=903137,
.age=20,
},
};
// ============================================
for(i=0; i<2; i++)
{
printf("struct staff[%d].id=%d\n", i+1, sta[i].id);
printf("struct staff[%d].age=%d\n", i+1, sta[i].age);
printf("\n");
}
printf("\n");
for(i=0; i<2; i++)
{
printf("struct student[%d].id=%d\n", i+1, stu[i].id);
printf("struct student[%d].age=%d\n", i+1, stu[i].age);
printf("\n");
}
return 0;
}
//====================== End =======================//
輸出結果如下:
沒有留言:
張貼留言