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;
}
定义好一个结构变量后,如果用结构指针指向其所在的地址,实质上指针指向结构变量的第一个成员的起始地址,其和数组类似
八、结构和函数;
结构作为参数
结构作为返回值
九、结构中的结构
二、如何制作自定义数据类型---结构类型的声明;
三、结构类型变量的定义;
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;
}
定义好一个结构变量后,如果用结构指针指向其所在的地址,实质上指针指向结构变量的第一个成员的起始地址,其和数组类似
八、结构和函数;
结构作为参数
结构作为返回值
九、结构中的结构
相关文章推荐
- 用C/C++设计Lu结构、字典、类等高级数据类型
- 小明学C++第二篇:数据类型、数据结构、算法
- C++ 与 C#数据结构类型对应关系表 (转)
- php学习基础篇之文档的语法结构、注释、变量、数据类型
- [C++]数据结构课程设计:迷宫老鼠1.0
- C++ 与 C#数据结构类型对应关系表
- 数据结构课程设计-通讯录管理系统c++版(顺序表存储,折半查找,递增排序)
- 无锁数据结构(基础篇):原子核、原子性、基本类型
- C++学习——第11章 创建自己的数据类型
- C++ 与 C#数据结构类型对应关系表
- 数据结构课程设计 表达式类型的实现
- C++数据结构课程设计
- C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理虚数的),再如分数。本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,
- Oracle查询数据表结构(字段,类型,大小,备注)---数据库设计说明书
- 数据结构之链表的实现-------C++课程设计-----学生选课管理系统
- c++基础(一):数据类型和结构
- C++数据类型和C#的部分对应关系 API与C#数据结构类型对应关系表
- 《C++第十四周实验报告1-2》---规定MyArray只能处理元素为整型的数据未免太弱了, 请设计成模板类,使之适应各种类型
- C++自定义数据类型之结构
- C++ 高级数据类型(五)—— 数据结构