引入
概念:在C語言中,結構體(struct)指的是一種資料結構,是C語言中聚合資料型別(aggregate data type)的一類,結構體可以被宣告為變數、指標或陣列等,用以實作較復雜的資料結構,結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的型別,成員一般用名字訪問,—百度百科
其實說人話就是:
結構體是C語言中用來描述“復雜物件”的
比如描述學生:名字+學號+年齡
結構體可以讓c語言創建新的型別出來
結構體型別相當于圖紙(先創建出來備用),結構體變數相當于實際造的房子.
別著急,看幾段代碼你就懂了
案例一:創建并直接列印一個結構體變數
struct Stu // 創造一個學生的型別-結構體型別
{
char name[20];//名字-字串,字串本身就是地址,以后用的時候不用取地址哈!
int age;//年齡-整數,記得到時候用scanf的時候取地址
char sex[5];
char id[20];
}; //這里有個分號!
int main(void)
{
//結構體變數:s1,s2就叫所謂的結構體變數,是我們自己創建出來的
struct Stu s1 = {"張三",18,"男","2021060701"};
struct Stu s1 = {"如花",45,"女","2021060702"};
printf("%s %d %s %s",s1.name,s1.age,s1.sex,s1.id;
//點運算子使用規范:結構體變數.結構體成員,參照上方.
return 0;
}
案例二:創建并用函式列印一個結構體變數
void print(struct Stu* ps)//此時函式得到的是s2的地址,這也就是指標的重要性,當我們不知道物件具體是什么而知道物件的地址的時候可以利用好指標
{
printf("%s %d %s %s",(*ps).name,(*ps).age,(*ps).sex,(*ps).id);
//此時需要解參考!,即使用"*"
//或者:
//printf("%s %d %s %s",ps->name,ps->age,ps->sex,ps->id);
//第二種寫法更簡單一點
}
struct Stu // 創造一個學生的型別-結構體型別
{
char name[20];//名字-字串
int age;//年齡-整數
char sex[5];
char id[20];
};
int main(void)
{
//結構體變數
struct Stu s1 = {"張三",18,"男","2021060701"};
struct Stu s1 = {"如花",45,"女","2021060702"};
print(&s2);//注意,這里只是取了s2的地址!
return 0;
}
輸入結構體s:
scanf("%s %d %s %s",s1.name,&(s1.age),s1.sex,s1.id);
//陣列不取地址
小技巧:
typedef struct Stu
//使用關鍵字typedef,以后就可以直接寫Stu,而不是struct Stu
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/386584.html
標籤:其他
上一篇:單鏈表快速歸并插入排序
