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
相关文章
相关标签/搜索