結構體的作用:
在我們解決生活中的很多實際問題時我們會遇到很多不同的數據類型組成一個個體,比如說我們在構造學生管理系統時需要把一個學生的信息作爲一個個體,這些信息有學號,姓名,成績等信息,這時候我們用數組是無法解決這種不同數據類型的問題,所以此時我們就需要結構體。
結構體的定義:
定義一個結構的一般形式爲:
struct 結構名
{
成員表列
}; //注意這個括號不能省略
比如說我們要定義一個學生信息管理系統
struct Stu
{
int num;
char name[20];
char sex;
};
在這個結構定義中,結構名爲stu,該結構由3個成員組成。 第一個成員爲num,整型變量;第二個成員爲name,字符型數組;第三個成員爲sex,字符型變量。
結構體的大小:
struct A
{
int a;
int b;
};
在這個結構體A中,有兩個整形,整形大小爲4個字節,所以結構體A爲8個字節;但是我麼發現並不是所有結構體的大小容易計算,結構體的地址存放滿足對齊方式(變量存放的起始地址相對於結構的起始地址的偏移量)
struct A
{
int a;
int b;
};//8
struct B
{
char a;//1+3
int b;//4
};//8
struct C
{
char a;//1+1
short b;//2
int c;//4
};
struct E
{
char a;//1+3
int b;//4
float c;//4+4
double d;//8
};
struct EE
{
char a;//1+3
char arr[3];//不使用,佔位
int b;//4
float c;//4
char brr[4];//不使用,佔位
double d;//8
};
struct D
{
char a;//1+3
int b;//4
short c;//2
};//10+2 //爲了數組對齊
struct F
{
char a;//1+7
double b;//8
short c;//2+2
int d;//4
};//24
struct G
{
char a;//1+1
short b;//2
int c;//4
double d;//8
};//16
關於結構體的修改我們需要引入一個新的符號“.”拿上述的學生管理系統爲例
如果我們要修改學生的學號爲1,我們可以stu.num=1;
需要注意的是我們修改學生的姓名時需要用strcmp函數,具體操作爲strcmp(stu.name) == 保羅;
字符串的使用
字符串的使用和修改差不多需要用“.”來訪問,有一個值得注意就是指針,在指針訪問時需要用到->
關於結構體的初步總結到此爲止,希望大家多多指教