C Primer Plus 結構體 struct 詳解 常見用法

1.      結構體ios

a)        結構體(struct)是由一系列具備相同類型或不一樣類型的數據構成的數據集合,叫作結構數組

b)        結構體同時也是一些元素的集合,這些元素稱爲結構體的成員(member),且這些成員能夠爲不一樣的類型,成員通常用名字訪問spa

c)        舉個栗子好啦。若是想打印圖書館中每本書的各類信息:書名、做者、出版商、頁數、版權日期、冊書及價格。能夠用字符串數組存儲書名、int數組存儲頁數、float數組存儲價格,但很複雜。結構既能夠包括字符串又能夠包括數字還能夠分別儲存這些信息設計

#include <iostream>
#define MAXTITL 41	//書名的最大長度
#define MAXAUTL 31	//做者名的最大長度+1
struct book{
	char title[MAXTITL];
	char author[MAXAUTL];
	float value;
}; //結構模板結束,有個分號
int main(){
	struct book library; //把library聲明爲book類型的變量
	printf("Please enter the book title.\n");
	gets(library.title); //訪問title部分
	printf("Now enter the author.\n");
	gets(library.author);
	printf("Now enter the value.\n");
	scanf("%f",&library.value);
	printf("%s by %s: $%.2f\n",library.title,library.author,library.value);
	printf("%s: \"%s\" ($%.2f)\n",library.author,library.title,library.value);
	printf("Done.\n");
	return 0;
}




2.      結構體定義code

a)        結構聲明是描述結構如何組合的主要方法。首先使用關鍵字struct,它表示接下來是一個結構。後面是一個可選的標記(在此慄中是單詞book),它是用來引用該結構的快速標記。在結構聲明中,接下來是一對花括號括起來的結構成員列表。每一個成員變量都用它本身的聲明來描述,用一個分號結束描述。如,title是一個擁有MAXTITL個元素的char數組。結束花括號後的分號表示結構設計定義的結束字符串

b)        第一種定義方式:get

struct{
	char title[MAXTITL];
	char author[MAXAUTL];
	float value;
}library;
struct book library; //將library聲明爲一個使用book結構設計的結構變量

c)        第二種定義方式:it

struct book{
	char title[MAXTITL];
	char author[MAXAUTL];
	float value;
}library;	//在定義以後跟變量名
聲明結構的過程和定義結構變量的過程能夠被合併成一步。下面的聲明是以上聲明的簡化。
struct book library;

d)        第三種定義方式:io

struct{			//沒有標記
	char title[MAXTITL];
	char author[MAXAUTL];
	float value;
}library;
聲明結構的過程和定義結構變量的過程能夠被合併成一步。將聲明和變量合併在一塊兒,不須要使用標記。然而,若是想屢次使用一個結構變量,就須要使用帶有標記的形





3.      初始化結構模板

a)        要初始化一個結構變量,可使用與初始化數組類似的語法。使用一個用花括號括起來的、逗號分隔的初始化項目列表進行初始化。每一個初始化項目必須和要初始化的結 構成員類型相匹配。所以,能夠將title成員初始化爲字符串,將value成員初始化爲數字。成員變量的定義能夠隨聲明進行

	struct book library={
		"The Pirate and the Devious Damsel",
		"Renee Vivotte",
		1.95;
	};

b)        結構就像是一個「超級數組」,裏面的一個元素能夠是char類型,下一個能夠是float類型,下一個能夠是int數組。使用下標能夠訪問一個數組的各個元素;用結構成員運算 符點(.)能夠訪問結構中的各個成員。例如,library.value指library的value部分,能夠像使用任何其餘float變量同樣使用library.value(library.value是float類型)。相似 的,能夠像使用一個char數組那樣使用library.title。在本質上,.title、.author和.value在book結構中扮演了下標的角色

	library.title="The Pirate and the Devious Damsel";
	library.author="Renee Vivotte";
	library.value=1.95;

c)        結構的指定初始化項目的語法與數組的指定初始化項目相似。結構的指定初始化項目使用點運算符和成員名。例如,只初始化book結構的成員value,能夠這樣作:

struct book library={.value=10.99};
還能夠按照任意順序使用指定初始化項目:
	struct book gift={ .value=25.99,
			   .author="James Broadfool",
			   .title="Rue for the Toad"};

d)        對特定成員的最後一次賦值是它實際得到的值

	struct book gift={.value=18.90,
			  .author="Philionna Pestle",
			  0.25};
這將把值0.25賦給value,由於它在結構聲明中緊跟在author成員以後,新的值0.25代替了早先的賦值18.90
相關文章
相關標籤/搜索