设为首页 加入收藏

TOP

对C++中指针类型的研究
2014-11-15 22:40:24 】 浏览:10302
Tags:指针 类型 研究

  C++中的“指针”实质上是指针类型的数据, 可以是“变量”也可以是“常量”,它里面存储的数值常被解释成为内存里的一个地址。人们往往只是简单的说“指针”,没有带“常量”或“变量”二字,那么,一个“指针”到底是指常量呢还是指变量呢?这个问题要根据它所属的那个整句来进行判断。C++中的指针按照它所指向的对象可以划分为变量指针、数组指针、函数指针、对象指针、类的成员数据指针和类的成员函数指针。


  1. 变量指针


  高级编程语言里都是通过变量来管理软件运行时内存中的变量数据,并不直接提供这个变量在虚拟内存中居体的位置,这里我们可以使用一些手段,得到一个变量在虚拟内存中的位置,这个位置就是我们这里所说的“变量指针”[1]


  设type代表任意一种基本类型说明符,X是该类型的变量,则:


  (1)X的指针常量为&X。


  (2)一个type型指针变量P的声明格式为:type *P;


  (3)使P指向X,也就是说用&X向P赋值的格式为:


  ①用&X初始化;


  ②在声明了P后向P赋值。


  2. 数组指针


  数组名本身就是一个指针,指向数组的首地址。注意这是声明定长数组时,其数组名指向的数组首地址是常量。而声明数组并使某个指针指向其值指向某个数组的地址(不一定是首地址),指针取值可以改变。


  指向数组的一个指针,如int (*p)[10] 表示一个指向10个int元素的数组的一个指针。


  设A是一个有3行4列个type型变量元素的一个二维数组,则:


  (1)A有两个意义:①表示这12个type型变量构成的整体。②表示A<0>的地址,即A=&A<0>。


  A<0>也有两个意义:①表示A的第一行的4个type型变量构成的整体(A中左下标为0的一行元素);②表示A<0><0>的地址。


  (2) ①声明一个指向type型的有3行4列个元素的二维数组的指针P的格式为:   type(*P)<3><4>;②声明一个指向 type型的有4个元素的一维数组指针P1的格式为: type(*P1)<4>;③声明一个指向type型变量的指针P2的格式为:type *P2。


  (3)①使P指向A的方式为:用&A初始化P或在声明了P后向 P赋值;②使P1指向A<1>的方式为:用“A+1”初始化P1或在声明了P1后向P1赋值;③使P2指向 A<2><1>的方式为:用&A<2><1>初始化P2或在声明了P2后向P2赋值。


  (4)用 A和*来表示A<2><1>的表达式为*(*(A+2)+1),表示A<0><0>的表达式为**A。


  (5)按3,①用P和*来表示A<2><1>的表达式为*(*(*P+2)+1);②用P1和*来表示 A<2><1> 的表达式为*(*(P1+1)+1);③用P2和*来表示A<0><0>的表达式为:*(P-6);


  用P、P1和P2来访问A的元素有很多优越性,如它们及其表达式可以进行++运算和- -运算而指针常量却办不到。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇在VC中对C/C++运行时库不同版本编.. 下一篇计算机二级辅导:标准库assert.h

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目