本文我们继续来谈谈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 示意图
再来完善那个示意图,这次加入“他址”的概念。
网友评论