struct
#if 0
#include
using namespace std;
main()
{
//定义结构类型
struct books
{
char title[20];
char author[15];
int pages;
float price;
} ;
//声明结构变量
struct books Zbk={"VC++ ","Xc",295,35.5};
books Wbk;
//对结构变量的输出
cout<<"Zbk:"<>Wbk.title;
cout<<"Wbk.author=";
cin>>Wbk.author;
cout<<"Wbk.pages=";
cin>>Wbk.pages;
cout<<"Wbk.price=";
cin>>Wbk.price;
cout<<"Wbk:"<
struct数组
#if 0
#include
using namespace std;
main()
{
int i;
//定义结构类型
struct student {
int num;
char name[10];
float maths;
float physics;
float chemistry;
double total;
};
//声明结构数组st
student st[3];
//从键盘上为结构数组输入值
cout<<" num name maths physics chemistry "<>st[i].num;
cin>>st[i].name;
cin>>st[i].maths;
cin>>st[i].physics;
cin>>st[i].chemistry;
}
//计算每个学生的总成绩
for (i=0;i<3;i++)
st[i].total=st[i].maths+st[i].physics+st[i].chemistry;
//输出结构数组各元素的值
for (i=0;i<3;i++)
{
cout<<"st["<
struct指针
#if 0
/*结构体指针*/
#include
using namespace std;
main()
{
//定义结构类型
struct human {
char name[10];
int sex;
int age;
};
//声明结构变量和结构指针变量,并初始化
struct human x={"XieCh",1,21},*p=NULL;
//结构指针变量指向对象
p=&x;
//显示结构变量的值
cout<<"x.name="<name="<name<sex="<sex<age="<age<>(*p).name;
cout<<"sex:";
cin>>(*p).sex;
cout<<"age:";
cin>>(*p).age;
//显示结构变量的值
cout<<"x.name="<
内存分配
#if 0
#include
using namespace std;
main()
{
//定义结构类型
struct human {
char name[10];
int sex;
int age;
};
//声明结构变量和结构指针,并初始化
struct human x={"XieCh",1,21},*p=&x;
//利用结构指针显示结构中的数据
cout<<"(*p).name="<<(*p).name<name=";
cin>>p->name;
cout<<"p->sex=";
cin>>p->sex;
cout<<"p->age=";
cin>>p->age;
cout<<"-------------------------"<name="<name<sex="<sex<age="<age<
结构数组
#if 0
#include
using namespace std;
main()
{
//定义结构类型
struct human {
char name[10];
int sex;
int age;
};
//声明结构数组和结构指针变量,并初始化
human x[]={{"WeiPing",1,30},{"LiHua",1,25},{"LiuMin",0,23}},*p=NULL;
//用下标变量的输出结构数组的元素
for (int i=0;i<3;i++)
{
cout<name<<'\t';
cout<sex<<'\t';
cout<age<
结构体指针
#if 0
/*结构体指针*/
#include
using namespace std;
main()
{
//定义一个包含指针成员的结构类型
struct test {
char *str;
int *ip;
}x;
//使用结构变量x中的整型指针ip
x.ip=new int; //分配1个单元
*(x.ip)=100;
cout<<"x.ip:"<
结构体嵌入
#if 0
/*结构体嵌入*/
#include
using namespace std;
main()
{
//定义date结构
struct date
{
int year;
int month;
int day;
};
//定义baby结构
struct baby {
int num;
float weight;
date birthday; // date为结构类型
};
//声明baby结构变量并初始化
baby b1={10001,10,{2011,06,16}};
//下列是baby结构变量b1的引用。
cout<<"b1.num="<
递归
#if 0
/*递归*/
#include
using namespace std;
main()
{
//定义名为list的递归结构
struct list {
char name[10];
int sex;
int age;
list *next; //成员next为指向其自身结构的指针
};
//使用递归结构变量
list L1={"XieCh",1,35.5,NULL};
cout<<"L1:"<
链表与结构体
#if 0
/*链表与结构体*/
#include
using namespace std;
main()
{
int i;
//定义名为student的递归结构
struct student {
char name[10];
int math;
int computer;
float sum;
student *next; //next成员是指向自身的结构指针
};
//用student声明3个结构指针变量
struct student *head,*tail,*temp;
//申请第1块数据,并设置各结构指针的初值
temp=new struct student; //申请内存
head=temp; // 头指针
tail=head; // 尾指针
//循环为链表输入数据
cout<<"\tname Math Computer"<>temp->name;
if (temp->name[0]!='*')
{
cin>>temp->math>>temp->computer;
temp->sum=temp->math+temp->computer;
temp->next=NULL;
tail=temp; //设置链表尾指针
}
else
{
// 以下是输入结束处理
delete temp;
tail->next=NULL;
break;
}
//为下一个学生申请内存
temp->next=new struct student;
temp=temp->next; // 使处理指针temp指向新内存块
}
//将链表数据从头到尾打印出来
cout<<"--------------------"<name<<","<math<<",";
cout<computer<<","<sum<next;
}
}
#endif
结构体递归
#if 0
/*结构体递归*/
#include
using namespace std;
main()
{
int i;
//定义名为student的递归结构
struct student {
char name[10];
int math;
int computer;
float sum;
student *forw; //forw成员是前指针
student *next; //next成员是后指针
};
//用student声明3个结构指针变量
struct student *head,*tail,*temp;
//申请第1块数据,并设置各结构指针的初值
temp=new struct student; //申请内存
head=temp; // 头指针
tail=head; // 尾指针
head->forw=NULL;
//循环为链表记录输入数据
cout<<"\tname Math Computer"<>temp->name;
if (temp->name[0]!='*')
{
cin>>temp->math>>temp->computer;
temp->sum=temp->math+temp->computer;
temp->next=NULL;
tail=temp; //设置链表尾指针
}
else
{
// 以下是输入结束处理
delete temp;
tail->next=NULL;
break;
}
//为下一个学生申请内存
temp->next=new struct student;
temp->next->forw=temp; //设置前指针
temp=temp->next; //使处理指针temp指向新内存块
}
// 将链表数据从头到尾打印出来
cout<<"head------>tail:"<name<<","<math<<",";
cout<computer<<","<sum<next;
}
// 将链表数据从尾到头打印出来
cout<<"tail------>head:"<name<<","<math<<",";
cout<computer<<","<sum<forw;
}
}
#endif
union
#if 0
/*联合体-共用体*/
#include
using namespace std;
main()
{
int i;
//定义联合类型
union utag {
char c;
int k;
float x;
};
//声明联合变量
union utag u;
// 使用联合变量中的字符型成员
u.c='*';
cout<<"u.c="<
结构体sizeof
#if 0
/*结构体sizeof*/
#include
using namespace std;
main()
{
//定义结构类型,并为声明的结构变量赋初值
struct s_tag {
short i;
float x;
} sx={100,3.1416};
//定义联合类型,并为声明的联合变量赋初值
union u_tag {
short i;
float x;
} ux={1000};
//输出结构类型和结构变量的有关信息
cout<<"sizeof(struct s_tag)="<
typedef
#if 0
/*typedef*/
#include
using namespace std;
main()
{
//自定义类型
typedef int ARRAY_INT[50];
int i;
ARRAY_INT a; //用自定义类型声明数组变量a
//以下为数组a赋值,并打印
for (i=0;i<50;i++) {
if (i%5==0) //每10个数换一次行
cout<
综合
#if 0
/*sizeof综合*/
#include
using namespace std;
//定义结构类型
struct student
{
int num;
char name[20];
float grade;
};
void main(void)
{
//声明数组
int i,size;
char str[]="This is a string.";
int int_values[] = {51, 23, 2, 44, 45,0,11};
float float_values[] = {15.1, 13.3, 22.2, 10.4, 1.5};
student st_arr[]={101,"WangLin",92,102,"LiPing",85,103,"ZhaoMin",88};
//显示char类型数组元素及其大小
size=sizeof(str) / sizeof(char);
cout<<"Number of elements in str: ";
cout<