1:为什么要建立结构体?
(1)在表示结构化信息时,如果用数组,信息会比较分散,不直观;
(2)对于代码过长的话,会导致重名;
(3)对于数据存取不方便;
eg1:比如要按ID来查找一个联系人,将联系人的信息返回。这个函数很难写出 来,因为字段多(条件),所以不方便。
所以针对以上现象,我们采用结构体。
2:什么是结构?
(1)结构是由不同的数据类型的数据组成的集合体。
(2)结构是由数目固定的成员构成。
(3) 各成员可以具有不同的数据类型。
(4) 一个结构变量在内存占有一片连续的存储空间。
3:什么是结构体?
c/c++的主要基本类型:char ,int ,double,float以及数组,指针等。
将基本类型组合起来,形成新的数据类型,称为自定义类型。
eg2:
struct contact
{ int ID;
char name[16];
char phone[16];
};
这里定义一个新的类型contact,地位和int ,double之类相同。
4:结构体的基本形式
struct TypeName
{ Members //成员变量可以是普通的变量/数组定义
};
其中struct是关键字,Typename为新类型的名称(变量名,由字母,下划线,数字组成),Members则为一系列的成员变量。
5:新类型(struct)的 使用(与基本类型差不多)
(1)定义一个变量
contact a;
(2)定义数组
contact as[3];
(3)指针
contact *pa=&a;
(4)作为函数参数
void test(contact a);
(5)作为返回类型
contact make(int id);
6:变量定义和初始化
(1)和一维数组一样,可以只初始化部分成员变量。
contact a=(201501,“John”}; //只初始化前两个成员。
contact a={0}; //则变量的每一位都是0,实现清零。
(2) 定义一个变量
contact a;//定义一个变量,不给初始值
定义时初始化:用大括号将各个成员的初始值列出。
contact a=
{ 201501, //int的初始化(用逗号)
“John”, //char 数组的初始化
“18601011223”
};
(3) 初始化时
注意使用大括号,末尾加分号;
各字段的初始值与改字段的类型匹配;
各初始值以逗号分开;
7:结构体的例子
(1)
输入John的任一字段(信息条件),便可找到联系人。
#include<stdio.h>
struct contact
{ int ID;
char name[20];
char phone{20];
};
int main()
{contact a=
{ 201501, //int初始化
"John", //char数组的初始化
"18601011223",
};
return 0;
}
(2)如何表示结构化信息?`
法一:
int ID[4]={201501,201502,201503,201504};
char name[4][16]=
{"John","Jennifer","Anxin","Unnamed"};
char phone[4][16]=
{ "18601011223", "138810022334",
"18600100100" ,"13111011011"
};
法二:
#include <stdio.h>
#include<string.h>//strcpy函数用于字符串的拷贝,需要<string.h>
struct contact
{int ID;
char name[16];
char phone[16];
};
int main()
{contact a;
a.ID=201501;
strcpy(a.name, "John");
stycpy(a.phone,"18601011223");
printf("%d\t%s")
return 0;
}