【C语言的学习】第十三回合:结构体大集合
第十三回合:结构体大集合
A: 结构体:是数据结构类型,把有内在联系的不同类型的数据统一成一个整体,使它们相互关联。又是变量的集合,可以单独使用其的成员。
定义:
struct 结构体名
{
类型标识符 成员名1;
类型标识符 成员名2;
……
}; //分号一定不能省
PS:
(1) 结构定义并不预留内存,结构体变量的定义才引起存储分配
(2) 结构体成员的数据类型可以是C语言的基本数据类型,也可以是数组和指针类型。还可以是自定义类型,成员的排列不分先后次序
(3) 结构体名是合法命名的标识符
(4) 结构定义仅描述了一个结构的形式。如果要在程序里使用结构,需要声明结构变量。
B: 结构体的输入输出
(a) 结构体变量不能整体输入输出,要通过成员运算符“.”,逐个访问其成员
如:
声明:
struct date
{ int year;
int month;
int day;
};
struct date birth;
输出的格式:
正确的输出格式:
printf("%d, %d, %d",birth.year, birth.month, birth.day);
下面的方法是错误的:
printf("%d,%d, %d",birth);
C:结构体变量的初始化
(a) 一般形式:
结构体类型名 结构体变量= {初始表};
(b)
1)间接初始化
strict ST
{
int num ;
char name[20];
char sex;
float score;
struct date birthday;
};
下面在main()中初始化
Struct STstudent ={102, "Zhangsan", 'M', 85,{1980,9,20}};
2)直接在结构体定义时初始化
strict ST
{
int num ;
char name[20];
char sex;
float score;
struct date birthday;
} student ={102, "Zhangsan", 'M', 85,{1980,9,20} } ;
D:结构体数组和结构体指针的定义、初始化跟上面的都一样,没什么不同。只不过结构体指针的访问除了用运算符“.”(点)访问,还可用指向运算符“->”访问(位置还是和用‘.’访问的位置一样)。
(复习做的笔记,还在整理中。。。。)