詳解C語言中的結構體

什麼是結構體

當你需要存儲很多個成員,但每個成員的寬度有不一樣,這時候我們就要去定義一個這樣的類型。

假設現在需要存儲一個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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章