函數指針傳參問題

        今天研究了一下函數指針傳參問題,遇到了一些問題,特此記錄下來,待後續研究。

        首先貼下自己寫的一個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 . 

     待以後解決。

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章