2017 09 14

对下列相关知识点的学习以及练习编写时对指针的应用:

一.对象数组

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类型的对象。

你可能感兴趣的:(2017 09 14)