gpt4 book ai didi

c - 难以理解指针输出

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

请看下面的代码:

#include <stdio.h>   
void main()
{
int a=30;
int *var=&a;
Change(&var);
printf("%d %d",*var,a);
}

int Change(int**ptr)
{
**ptr=40;
}

#include <stdio.h>
void main()
{
int a=30;
int *var=&a;
Change(var);
printf("%d %d",*var,a);
}

int Change( int *ptr)
{
*ptr=40;
}

两个程序的输出都是40 40

我们正在传递 var 地址的副本,那么为什么它会反射(reflect)在实际的 main 函数中并产生输出 40 40

为什么这两个程序产生相同的输出?

最佳答案

这两个程序是等价的。在第一个中,您将指针传递给指针(即指针变量的地址),然后取消引用它两次。在第二个中,您只是传递指针(即实际变量的地址)并取消引用一次。

关于c - 难以理解指针输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38218073/

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