P *P &P



背景概要

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

从开始准备C++开始,大家就普遍反映对*P和P的概念有点混乱,有时候可能碰巧答对了,再换个数据又不会了。。。而学习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

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

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错误。

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

时间: 2024-08-05 02:03:16