一、四中定义结构体类型变量方式以及初始化
1、先定义结构体类型再单独进行变量定义
struct Student
{
int Code;
char Name[20];
char Sex;
int Age;
};
struct Student Stu;
struct Student Stu[10];
struct Student *pStu;
初始化
struct Student
{
int Code;
char Name[20];
char Sex;
int Age;
};
struct Student Stu={200301,"张三",'M',21};
2、紧跟在结构体类型说明之后进行定义
struct Student
{
int Code;
char Name[20];
char Sex;
int Age;
}Stu,Stu[10],*pStu;
初始化
struct Student
{
int Code;
char Name[20];
char Sex;
int Age;
}Stu={200301,"张三",'M',21};
3、在说明一个无名结构体类型的同时直接进行定义,这种情况不能再用它来定义其他的变量。
struct
{
int Code;
char Name[20];
char Sex;
int Age;
}Stu,Stu[10],*pStu;
初始化
struct
{
int Code;
char Name[20];
char Sex;
int Age;
}Stu={200301,"张三",'M',21};
4、使用typedef说明一个结构体类型名后再用新类型名来定义变量,这种情况不可在写关键字struct
typedef struct
{
int Code;
char Name[20];
char Sex;
int Age;
}Student;
Student Stu,Stu[10],*pStu;
二、结构体使用
三种形式:
1、结构体变量名.成员名
2、指针变量名->成员名
3、(*指针变量名).成员名
#include<iostream.h>
struct Student
{
int Code;
char Name[20];
char sex;
int Age;
};
struct Student stu[2]={{200301,"张三",'M',21},{200302,"李四",'M',23}};
void main()
{
struct Student *pstu;
for(pstu=stu;pstu<stu+2;pstu++) //pstu为指向数组stu的指针,因为&stu[0]表示数组中第一个元素所在的内存地址,stu也表示一样的意思
{ //即stu指向stu[0],stu+1指向stu[1];
cout<<pstu->Code<<"\t"<<pstu->Name<<"\t"<<pstu->sex<<"\t"<<pstu->Age<<endl;
}
}
三、结构体做函数参数,引用传递,跟指针一样