gpt4 book ai didi

c - 输出是什么,为什么函数中的指针不影响代码?

转载 作者:行者123 更新时间:2023-12-04 15:28:13 25 4
gpt4 key购买 nike

为什么op是20??不是 10 吗?我认为 op 应该是 10,但我不知道发生了什么?你能一步步解释一下吗

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

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

最佳答案

  • 函数参数的值是调用者传递的内容的副本。在被调用者中修改不会影响调用者的局部变量。
  • 非静态局部变量将在退出其作用域时消失。因此,之后您不得解除对它们的引用。

要获得 10,您的代码应该是:

#include <stdio.h>

void fun(int **ptr) /* pass a pointer to modify caller's local variable */
{static int q=10; /* add static to prevent it from vanishing */
*ptr=&q; /* dereference the pointer */
}

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

关于c - 输出是什么,为什么函数中的指针不影响代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61830271/

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