重拾C++指针(入门)

    技术2022-05-20  31

    void main() { int nNumber; int *pPointer; nNumber = 15; pPointer = &nNumber; cout<<"nNumber is equal to "<< nNumber<<endl; *pPointer = 25; cout<<"nNumber is equal to :"<<nNumber<<endl; } 

    发觉每次学C++指针,每次过阵子就忘记了,不知道是自己脑子不好使,还是指针太难了,一不用就忘记了。

    吃一堑长一智,希望这次不要忘记了。

    现在指针有几种形式:

    *pPointer: 这个如果在左边,比如说int *pPointer,那就表示这是一个指向int型数字的指针。

    如果是*pPoint=25,那表示这个指向int型数字的指针它的value改成25。突然想到其实当中是个很复杂的概念,int型指针首先自己有一个分配的地址,有一个自己的value,我们也不管它的地址,value的话想必就是存这个int型数字的地址了吧,然后int本来也有一个value,比如说是15,自己也有一个地址。那*pPointer其实就代表了它指向的那个int型数字的value,这样就比较好理解一些了。这个操作相当于把这个int改成了25。

    然后中间有一行是&nNumber,放在了右边,从其他文章上看来,说应该就是"XXX的地址",那就是nNumber的地址给了pPointer。

    右边挺好理解的,左边就有点模糊了,一会儿是*pPointer赋值,一会儿是对pPointer赋值。其实很简单,因为pPointer是指向int的指针,那么能赋给pPointer的就是地址,也就是对pPointer的value赋值(前面说到过pPointer也有value和address),然后给*pPointer赋值,说白了,其实不是给pPointer赋值,和pPointer一点关系都没有,它只做了一个传递的过程,因为*pPointer指向了那个int数字的地址,所以*pPointer就代表了那个int数字。

    说到这里,自己感觉又有点似懂非懂,希望下次不要再出现类似问题了。我想自己能够再看一下,下次再继续贴一些关于指针的代码。巩固一下自己的基础。


    最新回复(0)