美文网首页C语言
C语言指针的理解(二)己值和他址

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

作者: 368b2befcaed | 来源:发表于2019-05-16 16:31 被阅读0次

    本文我们继续来谈谈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 示意图

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

    相关文章

      网友评论

        本文标题:C语言指针的理解(二)己值和他址

        本文链接:https://www.haomeiwen.com/subject/qzriaqtx.html