函数指针传参问题

        今天研究了一下函数指针传参问题,遇到了一些问题,特此记录下来,待后续研究。

        首先贴下自己写的一个test程序。

                   

                test.cpp运行结果:

                      

                 从上面的小程序可以看出来,整型i的值为:100,                       i    的地址为:0x0024F7CC,

                                                                    指针pI的值:0x0024F7CC          pI 的地址为:0x0024F7C0.

                                                                    指针ppI的值为:0x0024F7C0    ppI的地址为:0x0024F7B4.

              附上一张自己画的草图来简化他们之间的关系:

            

          综合上面几张图可以看出,指针的值是32位的正整数。变量pI的值就等于变量i的地址,而pI本身的地址为0x0024F7C0;ppI的值就是pI的地址,

         而ppI本身的地址为0x24F7B4.如此下去,我们甚至可以声明N级指针。草图表示了i,  pI, ppI的内存映像及他们之间的关系。

      

        现在回到上面程序的输出结果可以看到,&*p 和 *&p的值都为0x0024F7CC.   解释一下:*p = 100,则就是变量i的值,这个时候对*p进行取地址,&*p, 

        就得到 &*p = p = &i = 0x0024F7CC.   对于*&p 就更好理解, &p的地址为0x0024F7C0, * &p就相当于去这个地址块的值则 *&p = 0x0024F7CC.


       搞清楚上面的问题后,现在进入正题,函数指针传参问题:

      

    在这段小程序中,注意Allocate的参数写法为Allocate(int *&p,int size) .方法是要对地址p进行分配size大小的内存。

    这里这个参数* &p 是需要将p的地址传进来,这里有点不理解这个传参的具体含义。而且这里不能传诸如&*p, **p . 

     待以后解决。

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值