一、结构体的定义与使用
1. 定义结构体类型
结构体允许将不同类型的数据元素组合在一起形成一种新的数据类型
结构体类型声明一般放在程序文件开头,此时这个声明是全局的。
结构体类型声明也可以放到函数内部,此时这个声明是局部的。
(1)结构体类型和普通数据类型一样是类型名称,而不是该类型的一个实体,因此不会为结构体类型分配存储空间。
(2)结构体类型声明时成员可以又是结构体类型
2. 结构体类型实例化
定义结构体对象称为结构体类型实例化,实例化会根据数据类型为结构体对象分配内存单元。
(1)先声明结构体类型再定义对象
(2)声明结构体类型的同时定义对象
3. 结构体对象的内存形式
4. 结构体对象成员引用
(1)如果成员本身又是一个结构体对象,就要用成员引用运算符,一级一级地引用
(2)不能将一个结构体对象作为整体进行输入或输出,只能对结构体对象中的成员逐个进行输入或输出
(3)结构体对象可以进行赋值运算,但不能对其进行算术运算、关系运算等。
二、结构体与数组、指针和函数
1. 结构体与数组
[例] 输入5个学生的信息,按成绩递减排序;成绩相同时,按学号递增排序
#include <iostream>
using namespace std;
#define N 5
struct StudInfo{
int no;
double score;
};
int main()
{
struct StudInfo A[N], t;
int i, j;
for(i=0; i<N; i++){
cin >> A[i].no >> A[i].score;
}
for(i=0; i<N-1; i++){
for(j=i; j<N; j++){
if(A[i].score < A[j].score)
{
t = A[i];
A[i] = A[j];
A[j] = t;
}
}
}
for(i=0; i<N; i++){
cout << A[i].no << "," << A[i].score << endl;
}
return 0;
}