基礎---結構體淺解
阿新 • • 發佈:2021-08-22
資料結構與演算法
基礎---結構體
1.什麼是結構體&如何定義一個結構體
C語言允許使用者自己指定這樣一種資料結構,它有不同型別的資料組合成一個整體以便使用。
//一個結構體的一般形式:
struct 結構體名{
成員列表:
int a;
char b;
};
//struct用來宣告一個結構體,成員列表用來宣告結構體中有哪些變數。
//結構體成員可以包括結構體。
/前面那樣只是指定了一個結構體型別,相當於建立了一個模型,因為裡面沒有實際資料,所以系統不會為其分配記憶體單元。想要為其分配記憶體單元,我們需要建立結構體變數。
2.如何定義結構體變數
2.1方法一/間接
先宣告結構體型別,再定義結構體變數。
struct Student{
int age;
float score;
};//宣告結構體型別
struct Student XiaoMing;//定義結構體變數XiaoMing
//注意,關鍵字struct不能少。
2.2方法二/直接
在宣告結構體型別的同時定義變數。
struct Student{
int age;
float score;
}XiaoMing,XiaoHong;
//在聲明瞭Student型別的同時定義了XiaoMing XiaoHong變數。
2.3方法三/最直接
直接定義結構體變數
struct{ int age; float score; }XiaoMing; //直接定義了結構體變數XiaoMing //優點:快,方便。 //缺點:結構體型別不能再複用。
2.4方法四/利用typedef
typedef關鍵字的作用是給資料型別定義一個新名字:
typedef int ZS;//給int型別取一個新名字ZS。
ZS a;//宣告int型別變數a。
我們可以將其利用於結構體變數的宣告中:
typedef struct Student{ int age; float score; }Stu;//宣告結構體型別,並且為struct Student起了一個新名字Stu。 Stu XiaoMing;//通過typedef,我們省略了定義結構體變數時必須要有的關鍵字struct。 //這裡的Stu不是結構體變數,而是struct Studnet的別名。切記!切記! //另外,typedef起作用是在結構體型別建立完後,換句話說,這個結構體中不能用自己起的別名: typedef struct Student{ ... Stu stu;//這樣會報錯。 }Stu;
2.5幾點注意
- 型別與變數是不同的概念,不是混同,只能對變數賦值,存取或運算,而不能對一個型別賦值,存取或運算。在編譯時,對型別是不分配空間的,只對變數分配空間。
- 成員名可以和程式中的變數名相同,兩者不代表同一物件。
3.如何使用結構體
//結構體變數不能整個使用,只能對結構體變數中的各個成員分別輸入輸出。
struct Student{
int age;
float score;
}XiaoMing;
XiaoMing.age = 18;//對age賦值
XiaoMing.score = 99.5;//對score賦值
printf("%d %f",XiaoMing.age,XiaoMing.score);//列印這些值