指针和简单数组的结合

存储数据三个基本属性:数据的类型,数据存储的位置,数据的值。

    1. 指针介绍

      定义:存储值得地址。

      格式:与一般的数据定义结合形式如下:                                                                                                             Int update=5;  Int * pt;pt=&update;                                                                                                                                                                                                                                                                      Int * pt; Int *pt=&update;

 

  1. 声明及初始化

    与一般数据定义结合声明如上。

     

    对于声明中的*其两边的空格可有可无。

     

    指针的声明必须声明指针的地址,如果只初始化指针指向的数值或者两者都不定义是错误的。如下例子是错误的:

    Int *pt;

    *pt=2343:

     

    指针不是整型,不可以进行赋值和算数运算,不可简单的将值赋值给指针,但进行强制类型转化后可以:

                                                                                                                Int *pt;

                                                                                                                pt= 0x00829128; //valid

pt=(int *) 0x00829128; //invalid

  1. 分配和释放内存

    上述都是对已命名的内存进行指针命名,指针的真正用处是对未命名的内存以存储值,对正在运行的程序释放内存。

    其释放格式如下:

    typename * pointer_name= new typename;

    *new 变量声明的内存块与常规变量声明的内存块不同,常规变量及基于常规变量的指向指针存储在栈(stack)的内存区域,而new 声明的内存块存储在堆(heap)的自由存储区(free store)内。

     

    使用了new定义'内存块后,使用完需释放内存块,这时只需要在使用完调用"delete 指针名称"即可。

    对于使用delete需要注意的事项:

    配对使用newdelete,否则未配对只使用new会发生内存泄漏;

    不要重复释放,即过量使用delete释放;也不能释放声明变量对应的指针。

  2. 动态数组和指针的简单结合

    使用new来创建一个包含n 个某种类型的数组的指针的形式是:

    typename * pointer_name= new typename [n];

删除指针的内存块形式是:

                                                                                                             delete [] pointer_name;

对于new创建的指针数组,其pointer_name指向数组中第一个元素的地址,故可以应用数组中的规则及指针+1即可指向数组下一个元素的地址,相应的地址指向对应的元素值。

posted @ 2016-02-22 18:05  big_bear  阅读(332)  评论(0编辑  收藏  举报