gpt4 book ai didi

c++ - 如何以及何时制作指针拷贝

转载 作者:太空宇宙 更新时间:2023-11-04 08:34:19 24 4
gpt4 key购买 nike

在下面的代码中,输出是 20,并解释说在 fun() 中,q 是指针 p 的拷贝.因此,如果我们将 q 更改为指向其他内容,则 p 不受影响。函数复制指针的机制是什么。为什么 p 在存储 q 的地址时不打印 10。

void fun(int *p)
{
static int q = 10;
p = &q;
}

int main()
{
int r = 20;
int *p = &r;
fun(p);
printf("%d", *p);
getchar();
return 0;
}

最佳答案

因为函数 fun 按值传递参数。如果要在函数外修改变量,就需要指针。由于要在函数外修改一个int *指针,所以需要一个int **指针:

void fun(int **p)     //here
{
static int q = 10;
*p = &q;
}

int main()
{
int r = 20;
int *p = &r;
fun(&p); //and here
printf("%d", *p);
return 0;
}

在 C++ 中,您可以以类似的方式使用按引用传递。

关于c++ - 如何以及何时制作指针拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26954564/

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