gpt4 book ai didi

c - 函数中引用指针有什么区别

转载 作者:行者123 更新时间:2023-11-30 16:18:24 24 4
gpt4 key购买 nike

我正在创建一个修改变量的函数,以便引用它的函数(父函数?)可以使用它。

在下面的代码中使用“&x”与使用“z”有区别吗?

void changeX(int *p);

int main(void) {
int x = 10;
printf("%d\n",x);

int *z = &x;
changeX(z);
printf("%d\n",x);

// or

changeX(&x);
printf("%d\n",x);
return 0;
}

void changeX(int *p){
*p = *p + *p;
}

wildplasser 提出了一个很好的观点,已更新以显示我在输出中获得每个值的位置。

输出是:

10
20
40

两者产生相同的结果(以相同的方式更改 x),但它们之间是否存在不明显的差异?

感谢评论中的回答。现在对我来说很有意义。

最佳答案

第一次调用从参数z初始化参数。 ,即参数的值是指针 z 的值,初始化为 &x ,指向对象 x. 的指针值第二次调用从参数 &x 初始化参数。 ,这是一个指向对象 x 的指针值。这两个调用之间没有功能差异。在这两种情况下,参数 p函数中将具有完全相同的值,即指向 x 的指针值,唯一的区别是该值来自调用函数的地方......

关于c - 函数中引用指针有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55912154/

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