1. 程式人生 > 其它 >基礎---結構體淺解

基礎---結構體淺解

資料結構與演算法

基礎---結構體

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);//列印這些值