C语言

C语言指针的理解(二)己值和他址

2019-05-16  本文已影响0人  368b2befcaed

本文我们继续来谈谈C语言的指针,主要讲解己值和他址的概念。我们接着上一篇讲。

2.2 己值

2.2.1 “己值”的概念

“己值”,就是“自己的数据值”的简称。指针pInt作为一个变量,跟变量para一样,也有着自己的数据值。

2.2.2 “己值”的获取

上面提到,变量para自己的数据值是“1”,那么指针变量pInt自己的数据值是多少。在程序中:

pInt = ¶

printf("指针变量pInt自己的值是: 0X%x ", pInt);

我通过“&”运算符,将变量para的地址值赋给了指针变量pInt,通过printf来输出指针变量pInt的数据值。从运行结果中来看,指针变量pInt自己的数据值是“0X22feb4”。我们再看,变量para的地址也是“0X22feb4”,所以,

pInt = ¶

这个语句的本质,就是将变量para的地址,给了指针变量pInt的己值,这样就将指针变量pInt与变量para绑定在一起了。

在“己址”中提到了,指针pInt的数据值存储在地址为“0X22feb8”开始的4个字节的内存上,那么也就是说,地址为“0X22feb8”开始的内存,后面的4个字节都用来存储着一个数据值“0X22feb4”。

2.2.3 “己值”的代码写法

在代码中,表示指针变量pInt的“己值”的代码写法,常见的有

pInt;

也有的代码写法是:

pInt + N;

pInt - N;

这种写法的意思是用pInt的“己值”加上一个数字N或者减去一个数字N,这个等讲到“他型”这个属性时会提到。也有的写法是:

pIntA - pIntB;

这种写法表示的是两个指针变量用“己值”做减法。

2.2.4 示意图

现在,继续来完善上面的示意图,加入指针变量pInt的己值。

所以,一般而言,“己值”对于指针变量pInt来讲,是自己的数据值;对其它的int类型的变量来讲,就是它们的地址。

2.3 他址

2.3.1 “他址”的概念

“他址”的概念就是“他人的地址”的意思。其实在上面提到己值时,就已经不那么明显地提到了“他址”的概念。

2.3.2 “他址”的获取

整型变量para存储在内存地址为"0X22feb4"开始的4个字节。在程序中,我通过

pInt = ¶

将变量para的地址给了指针变量pInt,这样就将指针变量pInt与变量para绑定在一起了。更为本质的说,是把“他人的地址”赋值给了指针变量pInt的“己值”,这里,“他人的地址”的“他”,指的就是变量para,“他人地址的址”的“址”,指的就是变量para的地址。注意,你看,”他址“和”己值“在数据值上是一样的,所以,你领悟出了什么东西来了没?

很多教材所谓的“指针是一个地址变量,存储的是其它变量的地址”,说白了,就是在说“他址”这个维度的数据值等于“己值”这个维度的数据值,只是教材没说的那么明白。

2.3.3 示意图

再来完善那个示意图,这次加入“他址”的概念。

上一篇 下一篇

猜你喜欢

热点阅读