C++结构体,共用体,枚举,自定义类型

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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<num<<","<name<<","<sex<<","<score<

system("PAUSE");

return EXIT_SUCCESS;

}

程序中(*p)表示p指向结构体变量,(*p).num是p指向结构体变量中的成员num。C++提供指向结构体变量的运算符->,p->num表示指针p指向结构体变量中的成员num。“->”称为指向运算符。

以下3种形式等价:

①stu.num

②(*p).num

③p->num

分析下面3个运算:

相关文档
最新文档