结构体与共用体
结构体
//结构体成员变量不能直接使用
//结构体可以嵌套定义,但不能包含自己
//结构体可以用来定义变量
内存分配:
1.结构体占用的储存空间为结构体成员中,占字节数最大的成员变量的储存空间的整数倍
2.成员变量的书写顺序也会影响结构体占用储存空间的大小,所以尽量将相同数据类型的变量连续写
结构体类型变量定义
1.先定义结构体类型,再定义结构体变量
2.在定义结构体类型的同时定义结构体变量
3.直接定义结构体变量,形式简单,但不能重复使用结构体定义
结构体类型的使用
1.由结构体变量引用成员
一般形式:
结构体变量名.成员名
2.由指向结构体的指针变量引用结构体成员
一般形式:
指针变量名->成员名
结构体类型的初始化
1.不允许直接对结构体变量赋一组常量
2.不允许在结构体花括号内直接赋值
3.若结构体成员变量是另一个结构体类型的变量,则初始化时任要对各个基本成员赋予初值
结构体成员变量的输入与输出
C语言允许将结构体作为一个整体来使用,但不允许把一个结构体作为整体输入输出,应按成员变量输入输出
例
利用结构体类型描述年月日,输入一个日期,判断它是本年度第几天
#include<iostream>
using namespace std;
void main()
{
struct date
{
int year;
int month;
int day;
};
struct date pdate;
int days, i, d;
cout << "输入年月日:";
cin >> pdate.year >> pdate.month >> pdate.day;
days = 0;
for (i = 1; i < pdate.month; i++)
{
switch (i)
{
case 1:case 3:case 5:case 7:case 10:d = 31; break;
case 4:case 6:case 9:case 11:d = 30; break;
case 2:
if (pdate.year % 4 == 0 && pdate.year % 100 != 0 || pdate.year % 400 == 0)
d = 29;
else
d = 28;
}
days += d;
}
days += pdate.day;
cout << pdate.year << "年" << pdate.month << "月" << pdate.day << "是该年的第" << days << "天" << endl;
}
结果