引用和地址的有关问题
引用和地址的问题
#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);
了解了不 ?
#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);
了解了不 ?