预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共97页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第5章自定义数据类型本章学习要求:5.1自定义数据类型概述5.2枚举类型5.3数组类型5.3.1一维数组5.3.2二维数组5.4字符数组(字符串)5.4.1以'\0'结束的字符串5.4.2C++字符串string5.5结构5.5.1结构类型的定义5.5.2结构变量的定义和初始化5.5.3结构变量成员的访问5.5.4结构与函数例采用传值方式编写函数打印职工信息。 #include<iostream> usingnamespacestd; enumSex{MALE,FEMALE}; structDate{ intyear,month,day; }; enumPosition{PROGRAMMER,SALE,MANAGER}; structEmployee{ intno; charname[20]; Sexsex; Datehire_date; Positionpos; doublesalary; }; voidprint_employee(Employeee){ cout<<"工号:"<<e.no<<endl; cout<<"姓名:"<<e.name<<endl; cout<<"性别:"<<(e.sex==MALE?"男":"女")<<endl; cout<<"招聘日期:"<<e.hire_date.year<<"年" <<e.hire_date.month<<"月" <<e.hire_date.day<<"日"<<endl; cout<<"职务:"; switch(e.pos){ casePROGRAMMER:cout<<"PROGRAMMER"<<endl;break; caseSALE: cout<<"SALE"<<endl;break; caseMANAGER: cout<<"MANAGER"<<endl;break; } cout<<"工资:"<<e.salary<<endl; }5.6联合变量u的3个成员共同占用同一块内存区域。在使用联合变量时,不同时刻把它看成是不同类型的变量。如: u.i=100; 表示程序员把u看成是int型变量,此时前4个字节存储的是100的二进制补码。后4字节没有使用。再有: u.d=4.56; 表示程序员将u看成是一个double型变量,此时8字节存储的是4.56的内存二进制表示(包括指数部分和尾数部分),要注意,此时前4个字节的原来的100的二进制补码已经被覆盖。因此,若有: cout<<u.i; 输出的结果肯定不是100。“u.i”的含义是:将u所占内存空间的前4个字节,看作一个int型变量来看待。 联合类型变量的赋值是按其占有的整个内存空间进行复制,而不是按某个成员来赋值。例如,对于下面的赋值操作: unu2; u2=u; 它不是只把u.i赋给u2.i,而是把u所占内存空间所有内存中内容都复制到u2的内存空间中。5.7指针5.7.1指针的基本概念5.7.2指针变量的定义5.7.3指针变量的操作5.7.4指向常量的指针和指针常量5.7.5数组与指针例数组元素的各种访问方法。 #include<iostream> usingnamespacestd; intmain(){ inta[5]={1,2,3,4,5}; int*p,i; cout<<"数组名+下标:"; for(i=0;i<5;i++) cout<<a[i]<<""; cout<<endl; cout<<"数组名指针方式:"; for(i=0;i<5;i++) cout<<*(a+i)<<""; cout<<endl; p=a;//指针指向第0个元素 cout<<"指针方式:"; for(i=0;i<5;i++) cout<<*(p+i)<<""; cout<<endl; p=&a[0];//指针指向第0个元素 cout<<"指针+下标方式:"; for(i=0;i<5;i++) cout<<p[i]<<""; cout<<endl; }5.7.6指针与函数5.7.7指针数组与数组指针5.7.8多级指针5.7.9动态分配和撤消内存5.7.10链表3)删除链表中值为m的节点。 要删除值为m的节点,先要找到该节点,操作过程如下: Node*after=NULL,before=head; while(before->content!=m&&before->next!=NULL){ after=before; before=before->next; } /* while退出后,从节点值方面考虑只有两种可能: a.before->content==m 删除before指向的节点 b.before->content!=m 没有找