gpt4 book ai didi

c++ - 第三个例子发生了什么?

转载 作者:太空狗 更新时间:2023-10-29 20:28:34 25 4
gpt4 key购买 nike

考虑:

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
};

仍然会输出 2,因为 pvar 的拷贝已经正确创建了吗?

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

我无法详细说明一个更合适的问题标题,因为老实说我不知道​​什么第三个例子是什么。

最佳答案

第三个示例与第二个示例非常相似,因为您仍然将指针传递给 pvar 指针。指向指针的指针意味着您可以更改指针指向的任何内容。

指向指针的指针 (*) 和指针引用 (&) 之间的主要区别在于,无论何时传递指针引用,都必须初始化指针(非空,具有良好的-定义的值)。

关于c++ - 第三个例子发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12741802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com