C++结构体,共用体,枚举,自定义类型
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.结构体类型:
struct Student{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
上面代码声明了一个结构体类型,其结构体类型名为Student。声明一个结构体类型的一般形式为,
struct 结构体类型名{
成员列表
};
大括号内是该结构体中的全部成员(member),在声明一个结构体类型时必须对各成员都进行类型声明:
类型名成员名;
每一个成员也称为结构体中的一个域(field)。成员列表又称为域表。
在C语言中,结构体的成员只能是数据。C++对此加以补充,结构体的成员既可以包括数据(成员),又可以包括函数(成员)。但由于C++提供了类(class)类型,所以不必使用带函数的结构体。
声明一个结构并不分配内存,内存分配发生在定义这个新数据类型的变量中。
2.结构体变量的定义与初始化
2.1定义结构体变量:
方法一:先声明结构体类型再定义变量名
struct Student{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
Student stu1,stu2;
方法二:在声明时同时定义变量
struct Student{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}stu1,stu2;
2.2结构体变量赋初值
方法一:在定义结构体变量时赋初值
struct Student{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}stu1={001,"Jeff",'M',25,88,"Shanghai"};
方法二:在定义变量时初始化
struct Student{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
Student stu1={001,"Jeff",'M',25,88,"Shanghai"};
3.结构体变量的使用
[1]可以将一个结构体变量的值赋给另一个具有相同结构的结构体变量。
struct Student{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
Student stu1={001,"Jeff",'M',25,88,"Shanghai"};
Student stu2;
stu2=stu1;
[2]可以访问和设定结构体变量中的一个成员的值。
引用结构体变量中成员的一般方式为,结构体变量名.成员名。“.”是成员运算符,它在所有的运算符中优先级最高。
stu2.num=002;
[3]可以访问结构体变量成员的地址,也可以访问结构体变量的地址。
int main(){
struct Student{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
Student stu1={001,"Jeff",'M',25,88,"Shanghai"};
cout<<&stu1< cout<<&stu1.num< cout<<&stu1.score< system("PAUSE"); return EXIT_SUCCESS; } 结果: 0x22ff20 0x22ff20 0x22ff40 从结果可以发现,通过取地址&操作,可以得到结构变量的地址,这个地址就是结构的第一个成员地址。 4.指向结构体变量的指针: [1]通过指向结构体变量的指针引用结构体变量中的成员 int main(){ struct Student{ int num; char name[20]; char sex; int age; float score; char addr[30]; }; Student stu={001,"Jeff",'M',25,88,"Shanghai"}; Student *p=&stu; cout< cout<<(*p).num<<","<<(*p).name<<","<<(*p).sex<<","<<(*p).score< cout< system("PAUSE"); return EXIT_SUCCESS; } 程序中(*p)表示p指向结构体变量,(*p).num是p指向结构体变量中的成员num。C++提供指向结构体变量的运算符->,p->num表示指针p指向结构体变量中的成员num。“->”称为指向运算符。 以下3种形式等价: ①stu.num ②(*p).num ③p->num 分析下面3个运算: