title:結構體
date:2021-9-29
結構體的定義初始化
1、不使用typedef的結構體
以下例子中,不加typedef時,struct student 是結構體型別名
#include#include#includestruct student ;
int main() ;
*/ printf("學號: %d 姓名: %s 年齡: %d 體重:%d", stu.num, stu.name, stu.age, stu.weight);
return 0;
}
2、使用typedef的結構體
定義乙個新的型別
以下例子中,加了typedef,struct student是結構體型別名,student也是結構體型別名
student s中的s是結構體變數
#include#includetypedef struct studentstudent;
typedef int int32;
int main()
3、結構體陣列#include#includetypedef struct studentstudent;
int main(),};
s[0].number;
s[0].score;
s[1];
student* p = s;
printf("%d",s[0].score);
printf("%d",(*p).score);
printf("%d",p->score);
return 0;
}
結構體中位元組對齊原則
按照最長的成員對齊:結構體中預設以所佔位元組最長的成員劃分。例如,乙個結構體中 int 佔4個位元組最長,則按 4位元組作為排列長度
結構體預設按最長位元組對齊,也可認為規定對齊的最長長度
#include#include#include// #pragma pack(2) 規定在這個範圍裡的結構體按長度 2 對齊
#pragma pack(2)
typedef struct student student;
#pragma pack(2)
int main()
結構體定義的原則:保證結構體位元組對齊#include#include#pragma pack(2) /*指定按2位元組對齊*/
typedef struct a a;
#pragma pack() /*取消指定對齊,恢復預設對齊*/
typedef struct b b;
int main() /*6
8*/
C語言結構體
1.1.1 結構概念 1 結構存在的意義 存在是合理的,許多事物的存在是在不斷解決問題引入的,當然有更好的方法出現時改變也是合理的。在實際問題中,一組資料往往具有不同的資料型別。例如,在學生登記表中,姓名應為字元型,學號可為整型或字元型,年齡應為整型,性別應為字元型,成績可為整型或實型。顯然不能用乙...
C語言 結構體
宣告乙個結構體型別 struct 結構體名 成員表列 定義結構體變數的方法 1 先宣告結構體型別再定義變數名。在定義了結構體變數後,系統會為之分配記憶體單元.例如 struct student student1,student2 2 在宣告型別的同時定義變數,例如 struct 結構體名 成員表列 ...
c語言 結構體
1 定義結構體 c語言允許使用者自己建立不同型別資料組成的組合型的資料結構 struct 結構體名 1 結構體的型別不是只有一種,可以根據需要設計許多種,如struct student struct worker等 2 結構體的成員可以是另一結構體的成員,注意的是引用此成員的方式 2 定義結構體變數...