用户自定义数据类型学习笔记

1. 如何引用结构体变量

(1)两个相同结构的结构体变量之间可以赋值。其隐藏了其中所有变量的赋值。

补充:声明结构体变量在main函数之前

(2)引用结构体变量的一般形式:

student1.num=1000;

"."是一个运算符。其优先级最高,作用是读取对象里的数据成员。

2. 结构体数组

Person [3]={11,12,21,22}

其实质是多个结构体变量组成的数组,每一个结构体变量又包含许多个成员项。(联想表格)

namescore
num 1
num 2

 3. 指向结构体变量的指针

第一步 定义

Student stu;

Student *p=&stu; 

先给student这种类型的变量(即各成员)一个统一的名字stu。可以理解为Student的小名。(这一步一般在main函数中,也可在声明结构体变量之后)

给结构体变量一个指针,其指向这种变量中各类值。

第二步 如何输出指针所指的值?

注意这三种类型等价:

1 结构体变量.成员名

2.(*p).成员名

3. p->成员名

 ”->"是指向运算符,和“."类比

p->n++;

++p>n;

注意这两各运算过程的区别

 前者:先得n,用过后加1

后者: 先得n,加1后再用

4. 结构体类型数据做函数参数

三种用法

(1) 用结构体变量名做参数

void print (Student stu);

(2)用指向结构体变量的指针做实参 

void print(Student *);

Student *p=&stu;

print (p);

(3)用结构体变量的引用做函数参数。

(注意:别名实质是两个变量共用一个地址,且一般对象用指针,数据容器用引用)

&后面的名就是数据别名,引用本质还是指针,就是给这个指针开个空间,给这个空间一个名字,就是别名。 它的优点在于可以实现指针所指向值随引用的值的变化而同步变化,不必将指针值进行传回。这可以理解为将指针数据量化。

这是函数参数不是指针,而是引用

void Student (Student &);

......

void print (Student &stud)

这时输出stud中成员的值就是输出 Student中成员的值,stud就是引用。

5. 两种动态分配空间的语法:

new: 作用是开一个空间,并给这个空间一个地址,可做指针变量的值。

new int;

new int (100);

int *p=new int (100);

new char[10];

new NULL;

第一种就是开了个空间,注意,这个空间只能通过指针访问。

第2种在这个空间中存了一个值:100 ,

第四种就是开了一个能存十个数的数组空间

但要注意,new不能同时分分配二维数组。

若内存不够,new就会返回一个空指针NULL。

delate :撤销存储空间或撤销指针

delate p;

若撤销的是一个存了数组的空间,在delate 后加[ ]

delate [ ] p; 

 两者结合:给地址,这个地址类型假设是结构体数组,开空间,(填入地址),填地址指向结构体变量各成员值,输出,撤销空间。

6. 共用体:几个不同类型的变量共用一个空间。用union表示,但不能引用共用体变量,只能引用共用体变量成员。

 7.枚举类型 enum

把一个变量的所有可能值列举出来,变量的值在列举出来的值范围内。

enum 枚举类型名 {枚举常量表}   声明

枚举类型名(1)=1对应的枚举常量

先列出枚举的常量(也叫枚举常量),再定义枚举的变量,变量的范围就是枚举常量的所有值。

计算机会将枚举的常量赋值,因此不能用赋值语句对枚举常量赋值。通常赋值顺序为0,1,2,3.......

因此输出枚举常量就是输出计算机赋给枚举常量的值。在枚举时也可以自己制定枚举常量的值

 enum weekday {sun=7,mon=1,.....}

枚举的变量只能等于枚举常量,并不等于枚举常量背后的值,因为不属于一个类型。在这时可强制转换

workday=weekday(2) 

将值为2的枚举元素赋给workday.

8. typefde

就是声明一个新的类型名来代替已有类型名。

typedef int INT;

之后用INT就是用int。

注意:

int 

typedef int NUM[100]; 

 第二行是对int的扩容,扩为可含100个数据的数组。

9. 两种链表:

(1)静态链表:用结构体变量和指向结构体变量的指针构成的链表。

头指针:head,它存放一个地址这个地址指向第一个元素的第一部分。

结点:包含用户需要的数据和下一个结点的地址

头指针->          数据->指针->        数据->指针->       数据...

 离得近代表在一个结点。

最后表尾的指针用NULL。

其实就是将数据间通过指针进行连接。

如何构建链表?

在结构体变量中

 加一个next的指针,这个指针指向结构体变量。

head=&a;

a.next=&b;

b.next=&c;

c.next=NULL;

结构类似多元函数求导的链式法则。

 (2)动态链表:各结点可以随时插入或删除,且只能通过上一个结点找到下一个结点的地址。用new和delate 构建。

10.输出数表的结果  用两组switch

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值