引用和地址的有关问题

引用和地址的问题
#include   <iostream>


void   initialize(char     const   **ptrPtr)
{
        *ptrPtr= "c_style   pointer-to-pointer ";

}
void   initialize(char   const   *&refPtr)
{
          refPtr= "c++   reference ";
}
int   main()
{
      char   const   *ptr;
      initialize(&ptr);
      std::cout < <ptr < <endl;
      initialize(ptr);
      std::cout < <ptr < <endl;
}
输出结果是:
c_style   pointer-to-pointer
c++   reference
问下
initialize(&ptr);调用时   &ptr中的是取地址还是引用呀?
void   initialize(char   const   *&refPtr)这个char   const   *&refPtr   里面的&是引用还是取地址呀
c++中还有没有取地址这个说法呀?书看到这又迷惑了  
还有为什么initialize(&ptr);调用的是void   initialize(char     const   **ptrPtr)
  initialize(ptr);调用的是void   initialize(char   const   *&refPtr



------解决方案--------------------
initialize(&ptr);调用时 &ptr中的是取地址还是引用呀?
取地址

void initialize(char const *&refPtr)表示参数是指针的引用

还有为什么initialize(&ptr);调用的是void initialize(char const **ptrPtr)
initialize(ptr);调用的是void initialize(char const *&refPtr
重载的原因
------解决方案--------------------
看简单的例程
void funcn1(int &ri);
void funcn2(int *pi);
void funcn3(int *&rpi);

int main()
{
int i = 3;
int *pi = &i;
funcn1(i);
funcn2(&i);
funcn3(pi);

return 0;
}
希望说清楚了
------解决方案--------------------
*(*ptrPtr) = *(&ptr);
*(&refPtr) = *(ptr);
了解了不 ?