zoukankan      html  css  js  c++  java
  • 二级指针

    问题:如何理解指向指针的指针?

    我在一篇教程中看到下面这段,它描述指向指针的指针是如何运作的。

    引用文章相关段落如下:

    int i = 5, j = 6, k = 7;
    int *ip1 = &i, *ip2 = &j;

     

    现在我们可以这么写:

    int **ipp = &ip1;

    那么现在指针 ipp 指向了 ip1,ip1 指向了 i。*ipp 就是 ip1,**ipp 就是 i,或者说是 5。我们可以用我们熟悉的盒子箭头图来描述,像这样:


    如果我们接着这么写:

    *ipp = ip2;

    我们就改变了 ipp 指向的那个指针(也就是 ip1),现在它指向 ip2 所指的地方。也就是说(ip1)现在它指向了 j:


    我的疑问是:为什么在第二幅图里,ipp 还是指向 ip1 而不是 ip2?

    最佳答案:

    让我们暂时忘掉那些关于指针的各种类比。指针实际上存放的是内存的地址。

    & 符号的意思是取地址,也就是返回一个对象在内存中的地址。

    * 符号的意思是取得一个指针所指向的对象。 也就是如果一个指针保存着一个内存地址,那么它就返回在那个地址的对象。

    所以当你这么写时 *ipp = ip2,实际上是把 ipp 存的地址所对应的对象,也就是 ip1 取到,然后把 ip2 存的值赋值给 ip1,也就是 j 的地址。

    简单点就是:
    &:取址。
    * :取值。

  • 相关阅读:
    Mybatis学习总结(五)——动态sql
    1006 换个格式输出整数(15分)
    1005 继续(3n+1)猜想(25分) *
    1004 成绩排名(20分)
    1003 我要通过!(20分)*
    1002 写出这个数(20分) *
    1001 害死人不偿命的(3n+1)猜想(15分)
    CCSP 201312-2 ISBN号码
    CCSP201312-1出现次数最多的数
    c++动态定义数组
  • 原文地址:https://www.cnblogs.com/reality-soul/p/6178186.html
Copyright © 2011-2022 走看看