文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>【笔记】C++ 指针和引用的使用

【笔记】C++ 指针和引用的使用

时间:2011-06-02  来源:我的学习、生活

1.1 指针的概念

  声明任何一个变量,系统都会为其分配一定大小的内存,访问变量实际上就是访问其所占据的内存空间。

1.2 指针变量的声明、初始化和访问

1.2.1 声明:     数据类型 *变量名

1.2.2 初始化:   3种方式  

(1)初始化为NULL或0:表示指针变量指向的是一片无效的不可访问的内存;

  如: int *p= NULL;(NULL必须大写)

(2)初始化为已声明变量的地址;

  如:  int a;

     int *p=&a;   (指针变量的声明类型与其所指向的变量的类型必须一致,否则就要给出显式的强制类型转换)

(3)初始化为某一动态分配内存空间的地址。

1.2.3 指针变量的访问

  可以通过该指针变量访问内存中的数据,其访问形式为:

  *指针变量名

1.3 指针和数组

1.3.1 用指针操作一维数组

要点:定义相同类型的数组和指针变量,将指针变量指向数组首地址。

如:

1 int a[]={1,2},b[]={3,4}
2 int *p=NULL;
3 p=a;
4
5 p=&b[0];

1.3.2 用指针操作二维数组

(1)使用指向行的指针变量操作二维数组

声明形式为:  数据类型 (*指针变量名)[行长度];

如:

1 int a[][2]={1,2},b[][2]={3,4};
2 int (*p)[2]=NULL;
3
4 p=a;
5 cout<<p[0][0]<<p[0][1];
6
7 p=&b[0];
8 cout<<p[0][0]<<p[0][1];

(2)使用指针变量操作二维数组

如:

1 int a[][2]={1,2,3,4},b[][2]={4,3,2,1};
2 int *p=NULL;
3
4 p=a[0];
5 cout<<p[0]<<p[1];
6
7 p=&b[0][0];
8 cout<<p[0]<<p[1];

注:第四行和第七行等价,都表示二维数组第一个元素的首地址。

1.4 指向指针的指针

二级指针变量的声明方式为:  数据类型 **变量名;

。。。

1.5 const指针

  const指针分为常量指针和指针常量。

1.5.1 常量指针

  声明形式:  const 数据类型 *变量名;

  常量指针所指向的内存地址可以改变,但通过常量指针只能从内存读取数据,但不能修改内存中的数据。

1.5.2 指针常量

  声明形式:   数据类型 *const 变量名;

  指针常量是一个常量而不是变量,因此指针常量所指向的内存是固定的,不能改变的,但可以修改内存中的数据。

1.6 堆内存分配

  堆内存分配就是动态内存分配,指在程序运行时从堆中为指针变量申请实际需要的内存空间,当其不再使用时,要及时释放。

  C++中,使用new和delete这两个关键字完成堆内存分配和释放的操作。

说明:

(1)使用new分配的内存必须使用delete释放,否则会造成内存泄露,导致计算机处理速度变慢。

(2)在使用new分配堆内存时要区分[ ]和()。[ ]指定元素数目,()指定内存初值。如:

1 int a=3;
2 int *p1 = new int[a]; //分配了3个int型大小的内存
3 int *p2 = new int(a); //分配了1个int型大小的内存,且初值为3.

(3)在分配内存时为多个元素分配了内存,那么在使用delete释放内存时必须加[ ].

(4)必须使用指针保存分配的内存首地址,这是由于delete须根据首地址进行内存释放。

(5)如果分配是一个内存,释放时可以将[ ]去掉。

 1.7 引用

 1.7.1 引用的概念

  引用就是别名。

1.7.2 引用的声明

  声明形式:  数据类型 &引用名 = 变量名   其中,“&”是引用运算符。  其他用途:位与运算符、取地址运算符。

 1.73 const引用

  cosnt引用没有常量引用和引用常量之分,两种声明形式:

  const  数据类型 &引用名 =  变量名或常量     或者        数据类型 const  &引用名 =  变量名或常量

   const引用只能访问所引用对象的值,而不能修改所引用对象的值。

 好了,今天的学习就到这里了。

相关阅读 更多 +
排行榜 更多 +
百炼英雄抽卡技巧指南

百炼英雄抽卡技巧指南

休闲益智 下载
三角洲行动永久6格门禁卡包权限卡获取方法

三角洲行动永久6格门禁卡包权限卡获取方法

飞行射击 下载
三角洲行动粽子可兑换物品一览

三角洲行动粽子可兑换物品一览

飞行射击 下载