gpt4 book ai didi

c - C/C++ 中的引用/取消引用

转载 作者:太空宇宙 更新时间:2023-11-03 23:22:14 24 4
gpt4 key购买 nike

<分区>

我不明白指针的使用方式存在明显的差异。

以下代码摘自Pointers in C: when to use the ampersand and the asterisk? :

void swap(int *x, int *y) {int tmp = *x; *x = *y; *y = tmp; }
...
int a = 1, b = 2;
printf("before swap: a = %d, b = %d\n", a, b);
swap(&a, &b);
printf("after swap: a = %d, b = %d\n", a, b);

以下代码摘自https://en.wikipedia.org/wiki/Typedef :

int do_math(float arg1, int arg2) {
return arg2;
}

int call_a_func(int (*call_this)(float, int)) {
int output = call_this(5.5, 7);
return output;
}

int final_result = call_a_func(&do_math);

这是我不明白的地方:

第一种情况,为了抵消引用运算符的作用,解引用运算符与xy一起使用,所以为了更多地使用它们- 或者 - 如果您没有通过引用传递它们,您将使用它们而不取消引用的方式更少,您可以将它们与 * 一起使用。但在第二种情况下,call_this 不是使用取消引用运算符调用的,该运算符抵消了它通过引用传递的事实;即它不被称为 (*call_this)(5.5, 7)

为什么要使用 * 来抵消通过引用传递的影响,这样您就可以或多或少地使用它,就像您通常在变量的情况下那样,但在 case 中则不然功能?

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