欢迎来到天天文库
浏览记录
ID:45066546
大小:322.50 KB
页数:89页
时间:2019-11-09
《C语言程序设计课件第06章数组、指针与字符串》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六章数组、指针与字符串C++语言程序设计本章主要内容数组指针动态存储分配深拷贝与浅拷贝字符串2数组的概念数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素。数组属于构造类型。数组3数组的几点说明数组的定义形式同C语言中的数组。数组名是常量,表示数组元素的首地址。数组下标从零开始。下标必须是整形表达式。数组元素可以在定义时直接给出初始值列表。数组元素作函数参数同简单变量作函数参数。数组名作函数参数传递的是地址值。二维数组在内存中按行存放。数组4对象数组声明:类名数组名
2、[元素个数];访问方法:数组名[下标].成员名数组5对象数组初始化数组中每一个元素对象被创建时,系统都会调用类构造函数初始化该对象。通过初始化列表赋值。PointA[2]={Point(1,2),Point(3,4)};如果没有为数组元素指定显式初始值,数组元素便使用默认值初始化(调用默认构造函数或带默认形参值的构造函数)。PointA[2]={Point(1,2)};数组6数组元素所属类的构造函数各元素对象的初值要求为相同的值时,可以声明具有默认形参值的构造函数。各元素对象的初值要求为不同的值时
3、,需要声明带形参的构造函数。当数组中每一个对象被删除时,系统都要调用一次析构函数。数组7数组#includeusingnamespacestd;classPoint{public:Point();~Point();};Point::Point(){cout<<"DefaultConstructorcalled."<4、6-38声明例:inti;int*i_pointer;概念指针:内存地址,用于间接访问内存单元指针变量:用于存放地址的变量20003i_pointer*i_pointeri2000引用i_pointer=&i;i=3;*i_pointer=3;指针指针变量的概念9语法形式存储类型数据类型*指针名=初始地址;例:inta,*pa=&a;注意事项用变量地址作为初值时,该变量必须在指针初始化之前已说明过,且变量类型应与指针类型一致。可以用一个已赋初值的指针去初始化另一个指针变量。不要用一个内部auto变5、量去初始化static指针。指针指针变量的初始化10指针名=地址向指针变量赋的值必须是地址常量或变量,不能是普通整数。但可以赋值为整数0,表示空指针。指针的类型是它所指向变量的类型,而不是指针本身数据值的类型,任何一个指针本身的数据值都是unsignedlongint型。允许声明指向void类型的指针。该指针可以被赋予任何类型对象的地址。但是不能通过void类型的指针间接访问所指向的变量,必须经过强制类型转换。指针指针变量的赋值11例6-6void类型指针的使用#include6、usingnamespacestd;//voidvobject;//错,不能声明void类型的变量void*pv;//对,可以声明void类型的指针int*pint;inti;voidmain(){cout<<"i="<7、2指针变量的算术运算指针与整数的加减运算指针p加上或减去n,其意义是指针当前指向位置的前方或后方第n个数据的地址。这种运算的结果值取决于指针指向的数据类型。指针自增,自减运算指向下一个或前一个数据。例如:y=*px++相当于y=*(px++)(*和++优先级相同,自右向左运算)指针13papa-2pa-1pa+1pa+2pa+3*(pa-2)*pa*(pa+1)*(pa+2)*(pa+3)*(pa-1)short*pa1414pb-1pbpb+1pb+2*(pb-1)*pb*(pb+1)*(pb8、+2)long*pb1515关系运算指向相同类型数据的指针之间可以进行==与!=的关系运算。指向不同数据类型的指针,以及指针与一般整数变量之间的关系运算是无意义的。指针可以和零之间进行等于或不等于的关系运算。例如:p==0或p!=0指针变量的关系运算指针16指向数组元素的指针声明与赋值例:inta[10],*pa;pa=&a[0];或pa=a;通过指针引用数组元素经过上述声明及赋值后:*pa就是a[0],*(pa+i)就是a[i].a[i],*(pa+i),*(a+i),pa[i]
4、6-38声明例:inti;int*i_pointer;概念指针:内存地址,用于间接访问内存单元指针变量:用于存放地址的变量20003i_pointer*i_pointeri2000引用i_pointer=&i;i=3;*i_pointer=3;指针指针变量的概念9语法形式存储类型数据类型*指针名=初始地址;例:inta,*pa=&a;注意事项用变量地址作为初值时,该变量必须在指针初始化之前已说明过,且变量类型应与指针类型一致。可以用一个已赋初值的指针去初始化另一个指针变量。不要用一个内部auto变
5、量去初始化static指针。指针指针变量的初始化10指针名=地址向指针变量赋的值必须是地址常量或变量,不能是普通整数。但可以赋值为整数0,表示空指针。指针的类型是它所指向变量的类型,而不是指针本身数据值的类型,任何一个指针本身的数据值都是unsignedlongint型。允许声明指向void类型的指针。该指针可以被赋予任何类型对象的地址。但是不能通过void类型的指针间接访问所指向的变量,必须经过强制类型转换。指针指针变量的赋值11例6-6void类型指针的使用#include
6、usingnamespacestd;//voidvobject;//错,不能声明void类型的变量void*pv;//对,可以声明void类型的指针int*pint;inti;voidmain(){cout<<"i="<
7、2指针变量的算术运算指针与整数的加减运算指针p加上或减去n,其意义是指针当前指向位置的前方或后方第n个数据的地址。这种运算的结果值取决于指针指向的数据类型。指针自增,自减运算指向下一个或前一个数据。例如:y=*px++相当于y=*(px++)(*和++优先级相同,自右向左运算)指针13papa-2pa-1pa+1pa+2pa+3*(pa-2)*pa*(pa+1)*(pa+2)*(pa+3)*(pa-1)short*pa1414pb-1pbpb+1pb+2*(pb-1)*pb*(pb+1)*(pb
8、+2)long*pb1515关系运算指向相同类型数据的指针之间可以进行==与!=的关系运算。指向不同数据类型的指针,以及指针与一般整数变量之间的关系运算是无意义的。指针可以和零之间进行等于或不等于的关系运算。例如:p==0或p!=0指针变量的关系运算指针16指向数组元素的指针声明与赋值例:inta[10],*pa;pa=&a[0];或pa=a;通过指针引用数组元素经过上述声明及赋值后:*pa就是a[0],*(pa+i)就是a[i].a[i],*(pa+i),*(a+i),pa[i]
此文档下载收益归作者所有