当前位置:   article > 正文

数据结构与算法学习笔记一---前言

数据结构与算法学习笔记一---前言

目录

前言

1.指针

1.指针的定义和赋值

2.指针运算

3.指针和数组

2.动态存储分配

1.使用new获得动态内存空间

2.使用delete释放动态内存空间


前言

        最近又看了一下数据结构,总结了数据结构中需要了解的知识点。

1.指针

1.指针的定义和赋值

        程序中一般通过变量名来对内存单元进行存取操作。其实程序经过编译后已经将变量名转成变量的地址。系统根据程序中定义的变量类型,在内存中分配存储空间。程序编译后,变量名就不起作用了,采用地址取值。按照变量地址直接取值的方式称为直接存取方式,或者直接访问方式。

        除了直接访问的方式存取之外,C++中还有一种专门存地址的变量可以简介的访问变量。这个变量也就是指针变量。

        简单的来说,变量的地址就是该变量的指针。存放地址的变量称为指针变量。

        指针变量的声明方式如下:

数据类型 * 变量名;     

        例如:在下面的代码中,指针变量i_pointer指向的地址的数据类型是int。指针变量j_pointer指向的地址的数据类型是char。

  1. int *i_pointer;
  2. char *j_pointer;

        指针变量有两种赋值方法:

        既可以在定义时候初始化,例如:

  1. int i;
  2. int j;
  3. int * i_pointer = &i;
  4. int * j_pointer = &j;

        也可以在非定义的时候初始化,例如:

  1. int i;
  2. char j;
  3. int * i_pointer;
  4. char * j_pointer;
  5. i_pointer = &i;
  6. j_pointer = &j;

        需要注意的是不能使用一个整数给一个指针变量赋值。

2.指针运算

        指针运算符有两个:&和*。

        运算符&用于返回其操作对象的内存地址,其操作对象通常为一个变量名。例如:

ptr = & total;

        运算符*用于返回其操作数所指向的对象的值。

        指针可以进行p+n和p-n操作,分别表示的是指针指向后面(前面)n个元素。

        相同类型的指针变量类型之间可以互相赋值,表示两个指针变量指向内存中的同一个地址。

        两个指向同一类型的指针变量可以进行==、>、<等关系运算,其实就是地址的比较。

        指针之间可以进行相减比较,结果为两个指针之间相差的元素个数。

3.指针和数组

        C++中,数组元素的指针就是数组元素的地址。

        例如在下面的代码中:

int a[10];

int * p;

p = &a[0];

        和下面的代码是等价的。

int a[10];

int * p;

p = a;

        除此之外,数组名还可以作为参数传递。当将数组名传递给函数的时候,实际上所传递的事数组的首地址。在大量数据传递的时候,指针的效率要比传递数据效率要高得多。

2.动态存储分配

        C++中使用new和delete运算符来实现动态存储分配。

        动态存储分配步骤如下:

1.定义一指针变量

2.采用new申请一片内存空间,并将其首地址赋值给指针变量。

3.使用delete删除动态分配的存储空间。

1.使用new获得动态内存空间

        格式如下:

指针变量 =   new 类型;

        例如我们可以声明指针变量的时候赋初始值:

int * a;

a = new int(10);

        也可以使用new关键字给数组赋值。

int * a;

a = new int[10];

        由于动态分配的内存空间是堆内存或者自由存储区,通常数量是有限的。因此如果在程序中不断的分配堆内存就有可能将其耗尽。这个时候,系统无法再对new提出的堆内存分配请求给予满足,此时new会返回空指针NULL.所以我们分配之后,我们要判断下是否分配成功。

2.使用delete释放动态内存空间

        C++中使用new申请的动态存储,必须使用delete释放。这样做的目的是把闲置不用的堆内存归还给系统,可以使其重新分配。

        使用delete释放内存空间的语法格式为:

delete 指针变量;

        例如:

int * a;

a = new int;

...

delete a;

        释放数组占用的内存空间语法格式为:

delete[] 指针变量名;

        例如:

int * a;

a = new int[10];

...

delete[]a;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/474879
推荐阅读
相关标签
  

闽ICP备14008679号