[置顶] P *P &P



背景概要

 

        昨天晚上参加小组C++讨论会,内容涉及到很多方面,主要包括this指针,重载运算符函数、数组指针和指针数组、静态成员static等等,大家反映都很积极。当讨论到*PP的知识点时,卡壳了。。。

 

        从开始准备C++开始,大家就普遍反映对*PP的概念有点混乱,有时候可能碰巧答对了,再换个数据又不会了。。。而学习C++,指针是必学的,今天就跟大家讲一下我的理解,虽然马上就要考试了,我还是希望可以帮到有需要的同学,有不恰当的地方欢迎指正。

 

P  *P   &P

 

要想分清楚这几个表达式,就要弄清楚他们分别代表的含义。

在此之前,我们看一下下面的表格:

 

 

表达式

int a

int * P

类型

int

int *

变量

a

P

 

        P ,指针变量。学习指针,我们首先了解的就是:指针存的是指针所指向存储空间的地址,简单的来理解就是指针变量存的是地址,所以P代表的是地址,即门牌号

 

*P,取值,得到P指针指向的地址空间内存放的实际内容,即指定门牌号的住宅中的人

 

&P,取址,不难理解就是取地址,所以&P得到的是地址,也是门牌号

 

下面通过一个实例来理解一下:

已知 int a[5]={1,2,3,4,5},*P=a.现在我想要得到数值4,有下面几个表达式:

A)*P+4     B)*(P+3)     C)P+3

 

接下来我们一一看一下每个表达式的含义:

[置顶] P *P &P_第1张图片

 

A*P,取值,得到P指向的存储空间的首地址的存储内容,这里是1,所以*P+4=5,选项错误。

B*P,取值;P,代表地址。现在P指向的地址是20,所以P+3=23,相当于指针下移3个存储单元,现在指向地址23,所以*P+4=4.

C,从B选项已得知P+3=23,它的含义是地址,所以C错误。

 

以上就是我对于指针这一块儿的理解,马上就要考试了,祝大家考试必过!

你可能感兴趣的:([置顶] P *P &P)