文档详情

c语言程序设计数组指针与字符串.pptx

发布:2020-02-22约1.61万字共88页下载文档
文本预览下载声明
本章主要内容数组指针动态存储分配深拷贝与浅拷贝字符串数组的概念 数 组 数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素。 数组属于构造类型。数组的几点说明 数 组 数组的定义形式同C语言中的数组。 数组名是常量,表示数组元素的首地址。 数组下标从零开始。 下标必须是整形表达式。 数组元素可以在定义时直接给出初始值列表。 数组元素作函数参数同简单变量作函数参数。 数组名作函数参数传递的是地址值。 二维数组在内存中按行存放。对象数组 数 组声明: 类名 数组名[元素个数];访问方法: 数组名[下标].成员名对象数组初始化 数 组数组中每一个元素对象被创建时,系统都会调用类构造函数初始化该对象。通过初始化列表赋值。Point A[2]={Point(1,2),Point(3,4)};如果没有为数组元素指定显式初始值,数组元素便使用默认值初始化(调用默认构造函数或带默认形参值的构造函数)。 Point A[2]={Point(1,2)};数组元素所属类的构造函数 数 组各元素对象的初值要求为相同的值时,可以声明具有默认形参值的构造函数。各元素对象的初值要求为不同的值时,需要声明带形参的构造函数。当数组中每一个对象被删除时,系统都要调用一次析构函数。#includeiostreamusing namespace std;class Point{ public: Point(); ~Point(); };Point::Point(){ coutDefault Constructor called.endl;}Point::~Point(){ coutDestructor called.endl;}void main(){ Point A[2]; } 数 组P163 例6-3i_pointer*i_pointer20003i2000指针变量的概念 指 针概念 指针:内存地址,用于间接访问内存单元 指针变量:用于存放地址的变量声明 例:int i; int *i_pointer;引用 i_pointer =i; i=3; *i_pointer=3;指针变量的初始化 指 针 语法形式 存储类型 数据类型 *指针名=初始地址; 例:int a , *pa=a; 注意事项用变量地址作为初值时,该变量必须在指针初始化之前已说明过,且变量类型应与指针类型一致。可以用一个已赋初值的指针去初始化另一个指针变量。不要用一个内部auto变量去初始化static指针。指针变量的赋值 指 针指针名=地址向指针变量赋的值必须是地址常量或变量,不能是普通整数。但可以赋值为整数0,表示空指针。指针的类型是它所指向变量的类型,而不是指针本身数据值的类型,任何一个指针本身的数据值都是unsigned long int型。允许声明指向 void 类型的指针。该指针可以被赋予任何类型对象的地址。但是不能通过void类型的指针间接访问所指向的变量,必须经过强制类型转换。 例6-6 void类型指针的使用 指 针#includeiostreamusing namespace std;//void vobject; //错,不能声明void类型的变量void *pv; //对,可以声明void类型的指针int *pint; int i;void main(){ couti=iendl; pv = i; //void类型指针指向整型变量 //cout*pv=*pvendl; //错,不能访问 pint = (int *)pv; cout*pint=*pintendl;} cout*pv=*(int *)pvendl;指针变量的算术运算 指 针指针与整数的加减运算指针p加上或减去n,其意义是指针当前指向位置的前方或后方第n个数据的地址。这种运算的结果值取决于指针指向的数据类型。指针自增,自减运算指向下一个或前一个数据。例如:y=*px++ 相当于 y=*(px++) (*和++优先级相同,自右向左运算)pa-2*(pa-2)pa-1*(pa-1)pa*papa+1*(pa+1)pa+2*(pa+2)pa+3*(pa+3)short *palong *pbpb-1*(pb-1)pb*pbpb+1*(pb+1)pb+2*(pb+2)指针变量的关系运算 指 针关系运算指向相同类型数据的指针之间可以进行==与!=的关系运算。指向不同数据类型的指针,以及指针与一般整数变量之间的关系运算是无意义的。指针可以和零之间进行等于或不等于的关系运算。例如:p==0或p!=0指向数组元素的指针 指 针声明与赋值例:int a[10], *pa; pa=a[0
显示全部
相似文档