结构体

结构体定义和操作:
定义结构体及结构体变量:
一、定义结构体类型的时候同时定义变量:
struct结构体变量名
{
成员表;
成员函数;
}结构体变量表;

例如:

struct student
{
    string name;
   int chinese,math;
   int total;
}a[101];

同时定义了a数组变量
二、先定义结构体再定义结构体变量:

struct student
{
	string name;
	int chinese,math;
	int total;
};
student a[110];

注意的问题:

结构体变量名和结构体名不能相同。且只有定义结构体变量时,系统才能为其分配内存。
结构体变量的整体性:例如:swap(a[i],a[i+1]);
结构体变量的初始化与数组的初始化很类似:student op={“gaoxiang”,89,90,179};

结构体变量与成员之间引用的一般形式为:
结构体变量名.成员名
例:

for(int i = 0;i<=n;i++)
{
    cin>>a[i].name;
	cin>>a[i].chinese>>a[i].math;
	a[i].total=a[i].chinese+a[i].math;
}        //对结构体中成员的赋值、取值。

其中成员运算符”.”在存取成员数值时使用,其优先级最高,并具有做结合性,可记作:strua.strub.membb
这说明结构体变量strua有结构成员strub;结构体变量strub有成员membb。
结构体(struct)的应用:
一、离散化基础:即知道每个数排序后的编号(rank值)。
分析:排序时必须的,关键是怎么把排名写回原来的数下面,程序使用了分别对数值和下标不同关键词2次排序的办法来解决这个问题,一个数据节点应该包含数值、排名、下标3个元素,用结构体比较好。
二、模拟链表:动态指针比静态的数组存取慢,于是比赛时很多选手使用数组模拟指针。