用户可以自己声明自定义类型:
结构体类型(structure),共用体类型(union),枚举类型(enumeration),类(class)类型
结构体类型:
定义:
在一个组合项中包含若干数据类型不同或相同地数据项;c++和c允许用户自定义地一种数据类型,叫做结构体
一般形式:
struct 结构体类型名
{
成员表};
声明结构体时要对内部变量进行声明,
类型名 成员名
定义结构体变量三种方法:
1.先定义在声明变量,定义完成结构体在用的时候再去定义
struct student{
int age;
string str;};
int main(){
student student1;
return0;}
2.直接声明完成后定义变量
struct student{
int age;
string str;}student1,student3;
一般形式
struct 结构体名称{
成员表}变量名表;
结构体变量初始化:
1.声明后在定义是进行初始化
struct student{
int age;
string str;};
int main(){
student student1={10,”黎明“};
return0;}
2.直接声明完成后定义变量并初始化
struct student{
int age;
string str;}student1={10,”黎明“};
引用结构体变量
1.结构体变量可以赋值给相同结构的结构体变量
student1=student2;
2.引用结构体变量的成员
一般形式
结构体变量名 . 成员名
cout<<student1.age;
结构体数组:
就是每一个数组元素对应一个结构体变量,定义方法和变量相同,都可以在声明结构体时或则使用时定义,
初始化:
和变量初始化相同
struct student{
int age;
string str;};
int main(){
student student1[2]={10,”黎明“,20."讲解"};
结构体指针
1.通过指针访问元素
成员访问三种形式student*p=&student1;
1.结构体变量名 . 成员名
2.(*p) . 成员名
3.p->成员名
***注意****
p->n++;得到n的值,先使用,再让该值加一
++p->n:得到n的值。让该值加一。在使用
结构体链表的运用(数据结构详细描述)
new和delete动态分配空间
一般格式:
new 数据类型[初值];
delete []指针变量 (对数组)
delete 指针变量 (变量)
说明
new分配完会返回一个空间地址,一般那我们定义指针承接地址,如果指针为空则分配不成功,delete释放空间,只需要对指针操作即可;注意判断是否分配成功
例子:
int *p=new int;
delete p;
int*p=new int (100);开辟空间并存入值100
delete p;
int *p=new int[4];开辟一个存放四个元素大小的数组
delete p;
枚举类型
定义
如果一个变量只有可能是几个值,可定义为枚举类型,就是说变量的范围只能是范围之内的
枚举元素(枚举常量不可赋值操作)
一般形式:
enum 枚举类型名 {枚举常量表};
enum weekday {sun,mon};
定义变量
1.使用时定义
weekday workday;
2.声明时定义:
enum weekday {sun,mon} workday;
注意:
1.枚举常量不可赋值
sun=0;错误
2.枚举元素定义时会按照顺序系统赋值(从0开始依次往后递增)
weekday workday;
workday=sun;
cout<<workday;
输出结果为0
3.枚举元素可以在定义声明时自己赋予初始值,那么后面没有赋初值的会按照就近依次加以
enum weekday {sun=6,mon}
mon=7
4.枚举值可以比大小按照整数值
5.不可以将整数直接赋值给枚举变量
workday=sun;正确
workday=0;错误
可修改为
workday=weekday(0);c++语言风格强转换
workday=(weekday) 0;c语言风格强转换
typedef声明新的类型名(类型名起别名)
一般形式为:typedef 原类型 别名
例如
typedef int PP;
PP a =6; //与int a =6;是一样的
*** 简单理解****
1.就是按照原来定义任何变量的方法先写出来
2.将变量名换位你要起的别名
3.最前面加上typedef
3.用别名去定义变量
实操如下:
int num[10]
int num1[10]
typedef int num1[10];
num1 nu;nu是一个大小为10的int类型的数组