对下列相关知识点的学习以及练习编写时对指针的应用:
一.对象数组
1.声明:
类名 数组名[元素个数]; Circle round[\0];
2.访问方法:
通过下标访问 数组名[下标].成员名
3.对象数组初始化
·数组中每一个元素对象被创建时,系统都会调用类构造函数初始化该对象。
·通过初始化列表赋值。
·如果没有为数组元素指定显式初始值,数组元素便使用缺省值初始化(调用缺省构造函数,即无参数的构造函数)。
二.
1.内存空间的访问方式
·通过变量名访问,称为直接访问
·通过地址访问,称为间接访问
2.地址运算符:&
int var; 则&var 表示变量var在内存中的起始地址
3.指针变量的概念
·概念
指针:另一个变量的地址,用于间接访问变量
指针变量:用于存放地址的变量
·声明
例: int i;
int *i_pointer=&i; 指向整型变量的指针
4.指针变量的赋值运算
指针名=地址
“地址”中存放的数据类型与指针类型必须相符。
向指针变量赋的值必须是地址常量或变量,不能是普通整数。但可以赋值为整数0,表示空指针。
指针的类型是它所指向变量的类型,而不是指针本身数据值的类型,任何一个指针本身的数据值都是unsigned long 型。
允许声明指向 void 类型的指针。该指针可以被赋予任何类型对象的地址。
·当数组中每一个对象被删除时,系统都要调用一次析构函数。
二.指针
1.内存空间的访问方式
·通过变量名访问,称为直接访问
·通过地址访问,称为间接访问
2.地址运算符:&
int var; 则&var 表示变量var在内存中的起始地址
3.指针变量的概念
·概念
指针:另一个变量的地址,用于间接访问变量
指针变量:用于存放地址的变量
·声明
例: int i;
int *i_pointer=&i; 指向整型变量的指针
4.指针变量的赋值运算
指针名=地址
“地址”中存放的数据类型与指针类型必须相符。
向指针变量赋的值必须是地址常量或变量,不能是普通整数。但可以赋值为整数0,表示空指针。
指针的类型是它所指向变量的类型,而不是指针本身数据值的类型,任何一个指针本身的数据值都是unsigned long 型。
允许声明指向 void 类型的指针。该指针可以被赋予任何类型对象的地址。
5.指针变量的算术运算
指针与整数的加减运算:指针 p 加上或减去 n ,其意义是指针当前指向位置的前方或后方第 n 个数据的地址。这种运算的结果值取决于指针指向的数据类型。指针加一,减一运算,指向下一个或前一个数据。
6.指向数组元素的指针
声明与赋值
例: int a[10], *pa;
pa=&a[0]; 或 pa=a;
通过指针引用数组元素经过上述声明及赋值后:
*pa就是a[0],*(pa+1)就是a[1],... ,*(pa+i)就是a[i]. a[i], *(pa+i), *(a+i), pa[i]都是等效的。不能写 a++,因为a是数组首地址是常量。
7.指向类类型对象的指针:
声明形式:类名 *对象指针名;
通过指针访问对象成员 对象指针名->成员名
三.动态内存分配
1.动态申请内存操作符 new new 类型名T(初值列表);
·功能:在程序执行期间,申请用于存放T类型对象的内存空间,并依初值列表赋以初值。
·结果值:成功:返回指向T类型的指针,指向新分配的一个T类型的内存空间的首地址。失败:0(NULL)
2.释放内存操作符delete
用new申请的动态空间使用完毕后,必须有程序员主动进行释放。
·功能:释放指针P所指向的内存。P必须是new操作的返回值。
3.指针数组
数组的元素是指针型
Point *pa[2]; 由pa[0],pa[1]两个指针组成,都指向Point类型的对象。