考虑:
1.
int one=1;
void func(int* ptr)
{
ptr=&one;
}
int main() {
int nvar=2;
int* pvar=&nvar;
func(pvar);
std::cout<<*pvar<<std::endl;
return0
};
由于创建了 pvar 的副本,仍然会输出 2 吗?
2.
void func(int*& ptr)
{
ptr=&one;
}
输出将为 1,因为指针的引用已通过,一切正常
3.
int one=1;
void func(int** ptr)
{
*ptr=&one;
//or **ptr=one;
}
int main()
{
int nvar=2;
int* pvar=&nvar;
func(&pvar);
std::cout<<*pvar<<std::endl;
输出 1
我无法详细说明更合适的问题标题,因为老实说我不知道第三个示例是什么。