c++学习笔记(一)

来源:互联网 发布:gpd pocket 知乎 编辑:程序博客网 时间:2024/04/30 07:23

                                                                                 一、指针及其相关内容


(1)、指针---用于存储值的地址。指针名表示的是地址,*运算符被称为间接值或解除引用运算符,将其应用于指针,可以得到该地址处存储的值。

*---内容;&---地址。

eg:

       int *p;

      称作:p指向int类型,或,p的类型是指向int的指针。

       int * P1,P2;

       其中,P1为指针,P2为int型。

      赋值:(强制类型转换)

       int *pt;

       pt=(int *)0xB8000000;  //types not match

(2)、new运算符----找到一个长度正确的内存块,并返回该内存块的地址。

eg:

      int  * p=new int;

      new int 告诉程序,需要设和存储int 的内存。

获得并指定分配内存的通用格式如下:

typeName  *   pointer_name=new  typeName;

(3)、分配内存的两种方法及比较

<1>int   higgens;

       int  * p=&higgens;

<2>int  * p=new int;

比较:

<1>通过名称higgens来访问该int。

<2>只能通过该指针进行访问,p指向的内存没有名称,如何称呼它呢?我们说p指向一个数据对象,这里的“对象”不是“面向对象编程”中的对象,而是一样“东西”。术语“数据对象”的“变量”更通用,它指的是为数据项分配的内存块。因此,变量也是数据对象,但p指向的内存不是变量为一个数据对象(可以是结构,也可以是基本类型)

(4)、使用delete释放内存

int  *ps=new int;   //allocate memory with new

......                        //use the memory

delete ps;              //free memory with delete when done

这将释放ps指向的内存,但不会删除指针ps本身,可以将ps重新指向另一个新分配的内存块,一定要配对的使用new和delete,否则会产生内存泄露(memory leak)

warning:只能使用delete来释放使用new分配的内存,然而,对空指针使用的delete也是安全的。

(5)、使用new来创建动态数组

int * psome =new int   [10];     //get a block of 10 ints

释放:delete []  psome;

为分组分配内存的通用格式如下:

type_name  * pointer_name =new   type_name[num_elements];

warning:指针当做数组名使用即可,第一个元素为psome[0],第二个元素为psome[1],依此类推。

eg:

#include<iostream>

int main( )

{

       using namespace std;

       double *p=new double[3];

       p[0]=0.2;

       p[1]=0.5;

       p[2]=0.8;

       p=p+1;    //increment the pointer

       p=p-1;     //point back to beginning

       delete []p;

       return 0;

}