gpt4 book ai didi

c++ - 函数调用中多个星号有什么用?

转载 作者:IT老高 更新时间:2023-10-28 12:32:50 37 4
gpt4 key购买 nike

我想不出函数调用中多个星号的任何实际用途:

void foo(int a, char b)
{

}

int main(void)
{
(**************foo)(45, 'c');

//or with pointer to function:
void (*ptr)(int, char) = foo;
(******ptr)(32, 'a');
}

为什么在 C 和 C++ 中都允许这样做?

最佳答案

在 C 和 C++ 中,标准转换之一是函数到指针的转换;当函数名出现在表达式中时,可以将其转换为指向该函数的指针。所以:

  • foo 等价于 &foo
  • *foo 等价于 *(&foo),或 foo
  • **foo 等价于 **(&foo),或 *foo,或 foo

等等。

这意味着您可以合法地在函数名称前添加任意数量的 * 而不会改变其含义。不过,没有理由这样做。

关于c++ - 函数调用中多个星号有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12192368/

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