什麼是結構體
當你需要存儲很多個成員,但每個成員的寬度有不一樣,這時候我們就要去定義一個這樣的類型。
假設現在需要存儲一個2K球員的屬性:
球員名 運動 突破 背身 中投 三分 組織 外防 內防 籃板
char int flot int int int int int int int
這時我們要想都包含進去,就需要定義一個結構體
char = 容器
int = 容器
數組 = 容器
結構體 =容器
結構體類型的定義
結構體定義格式:
struct 類型名
{
//可以定義多種類型
int a;
char b;
short c;
}
例如:
#include <stdio.h> //頭文件
#include <windows.h>
struct player1 //定義一個新的類型
{
int x; //定義變量
int y;
};
struct player1 Luka; //定義變量Luka
void main() //程序入口
{
getchar(); //獲取輸入
return; //程序結束
}
同時我們在結構體中依然可以調用之前定義的結構體,例如:
struct player1
{
int x;
int y;
};
struct player2
{
int x;
int y;
struct player1;
};
struct player2 Luka;
結構體的定義非常靈活,除了它自身以外,可以使用任何類型。
結構體類型的變量
上面的例子定義的都是結構體類型,接下來我們定義一下結構體變量:
#include <stdio.h> //頭文件
#include <windows.h>
struct player1 //定義一個新的類型
{
int x; //定義變量
int y;
};
player1 Luka = {10,20}; //定義結構體類型的全局變量變量Luka
void main() //程序入口
{
getchar(); //獲取輸入
return; //程序結束
}
我們可以在VC6裏調出監視器來看一下,這樣可以非常直觀的看看他存儲的值是多少:
結構體類型變量的讀寫
#include <stdio.h> //頭文件
#include <windows.h>
struct player1 //定義一個新的類型
{
int x; //定義變量
int y;
};
player1 Luka = {10,20}; //定義結構體類型的全局變量變量Luka
int x;
int y;
void main() //程序入口
{
//讀
x = Luka.x;
y = Luka.y;
printf("%d\n",x);
//寫
Luka.x = 5;
Luka.y = 15;
printf("%d\n",x);
getchar(); //獲取輸入
return; //程序結束
}
這裏需要注意,不可以把結構體變量的整型賦給一個整型,例如:
int x = player;
//或者
player = y;
也不可以兩個結構體類型相等:
player1 = player2;
這裏另一種定義方法,我們可以在定義結構體的同時也定義變量:
#include <stdio.h> //頭文件
#include <windows.h>
struct player1 //定義一個新的類型
{
int x; //定義變量
int y;
}Luka,Park,Book;