您的位置:首页 > 编程语言 > C语言/C++

C++---基础篇(结构--设计自己的数据类型)

2012-09-23 20:23 267 查看
一、自定义的数据类型--结构的概念;

二、如何制作自定义数据类型---结构类型的声明;

三、结构类型变量的定义;

struct 结构名 变量名; 例如:struct student sd1,sd2;

声明一个结构,并不分配内存,内存分配发生在定义这个新数据类型的变量中。结构中的成员总是按照其声明顺序分配内存的。

typedef定义新的类型名来代替已有类型名,其格式为:

typedef 原数据类型名 新数据类型名

如 typedef int COUNT;

COUNT i; 将变量i定义为了COUNT型,而COUNT型等价于int型。

四、对结构变量的赋值;

两种方式:

(1)可以用数据集合对结构变量赋值(已经将struct student 定义为 STUDENT)

STUDENT sd;

sd={800123,"LIMIN",'M',16,89.5};

(2)逐个对成员进行赋值:

STUDENT sd;

sd.id = 800123;

strcpy(sd.name,"LIMIN");

sd.sex='M';

sd.age=16;

sd.score=89.5;

五、结构成员的访问;

访问格式为:结构变量名.结构成员名

如:sd.sex

六、特殊的自定义类型---枚举类型;

由若干个有名字的整型常量的集合组成,被称为枚举类型(将变量可能的值一一列举出来,比如说,周一到周日,每天都有一个特定的简写名字)

定义的格式为:enum 枚举类型名 {枚举值列表};

采用枚举变量可以增加程序的可读性。

用一个例子来理解:输出枚举类型变量的值:

#include <iostream>

enum WEEK {SUM,MON,TUE,WED,THU,FRI,SAT}; //声明枚举类型WEEK

using namespace std;

int main()

{

WEEK week1,week2,week3; //声明枚举变量。。利用枚举类型来声明枚举变量

week1=MON; //枚举变量赋值

week2=WED;

week3=SAT;

cout<<week1<<" "<<week2<<" "<<week3<<endl; //输出枚举变量值

return 0;

}

七、结构类型的数组和指针;

为什么要有结构数组

一个STUDENT结构的变量,可以存放1个学生的相关数据,如学号、姓名、成绩等数据,但如果有三个学生的数据需要存放?这就应该使用结构数组。

声明结构数组的格式为:

struct 结构名 结构数组名

如 struct student sdArray[3]

初始化:

struct student sdArray[3]={{800123,"SRF",....},{800124,"LOVE",....},{800125,"DP",.......}}

一个例子来感受结构数组:根据学号查找学生信息

#include <iostream>

using namespace std;

struct student{

long id;

char name[10];

char sex;

int age;

float score;

};

typedef struct student STUDENT;

STUDENT sdArray[5]={{800123,"dp",'M',16,89.5},{800124,"srf",'M',16,95.5}, //声明结构数组并初始化

{800125,"jiaoda",'M',16,80},{800126,"love",'M',17,88.5},

{800127,"me",'M',15,66}};

bool findStudent(long id,int &index); //查找函数声明

void disp(int index); //显示函数声明

int main()

{

long id=0;

int index=0;

cout<<"请输入学号:";

cin>>id;

if(findStudent(id,index)) //查找学号相同的,查找到,显示出来

{

disp(index);

}else{

cout<<"没有该学号相关记录"<<endl;

}

return 0;

}

bool findStudent(long id,int &index)

{

for(int i=0;i<5;i++)

{

if(sdArray[i].id==id)

{

index =i; //相同的就赋值给index,返回真

return true;

}

}

return false;

}

void disp(int index){

cout<<"学号\t姓名\t性别\t年龄\t成绩"<<endl;

cout<<sdArray[index].id<<"\t"<<sdArray[index].name<<"\t"<<sdArray[index].sex

<<"\t"<<sdArray[index].age<<"\t"<<sdArray[index].score<<endl;

}

结构指针 可以用来指向任何合法的结构,也可以由指针来操纵结构成员中的数据。
格式为:struct 结构名 * 指针名
通过一个程序来感受结构指针:通过结构指针来访问结构成员

#include <iostream>

using namespace std;

struct student{

long id;

char name[10];

char sex;

int age;

float score;

};

typedef struct student STUDENT;

bool findStudent(long id,int &index);

void disp(int index);

int main()

{

STUDENT *p=NULL; //声明结构指针

STUDENT sd={800123,"Limin",'M',16,89.5}; //给结构变量赋值

p=&sd; //把指针指向结构变量sd

p->age=18; //改变结构变量成员值age

p->score=86.5;

cout<<"学号\t姓名\t性别\t年龄\t成绩"<<endl;

cout<<p->id<<"\t"<<p->name<<"\t"<<p->sex

<<"\t"<<p->age<<"\t"<<p->score<<endl;

return 0;

}

定义好一个结构变量后,如果用结构指针指向其所在的地址,实质上指针指向结构变量的第一个成员的起始地址,其和数组类似
八、结构和函数;
结构作为参数
结构作为返回值
九、结构中的结构
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐