gpt4 book ai didi

c - 了解奇怪的返回语法 : return(*scriptFunction[x])(arguments);

转载 作者:行者123 更新时间:2023-12-04 10:17:29 24 4
gpt4 key购买 nike

我知道这个标题很可怕,为此我很抱歉;老实说,我不知道如何提出我的问题,因为我在这件事上没有受过良好的教育。下面有一小段代码与我的问题有关,因为我不知道发生了什么,也不知道它是否有效!虽然,我怀疑它是有效的。

return(*scriptFunction[x])(arguments);

根据我的理解,您只能在 C 中返回 1 个值(您可以有多个 return 语句,但那是不同的并且离题)。上面的语句实际上在做什么?

最佳答案

代码:

return(*scriptFunction[x])(arguments);

实际上只返回一个值。

变量 scriptFunction 将是一个函数指针数组(1)。您查找该数组的元素号 x,并调用该函数,传递参数 arguments。然后,那个 函数的返回值就是您返回给调用者的值。

除了函数指针方面,return sqrt(42) 没有什么不同。


例如,以下程序演示了如何完成此操作:

#include <stdio.h>

// Two simple functions which add a fixed value.

int fnPlus3 (int n) { return n + 3; }
int fnPlus7 (int n) { return n + 7; }

// An array holding those two functions.

int (*scriptFunction[])(int) = { fnPlus3, fnPlus7 };

int main (void) {
// Call first function in array.

int x = 0;
printf ("%d\n", (*scriptFunction[x])(100));

// Then call second one.

x = 1;
printf ("%d\n", (*scriptFunction[x])(100));

return 0;
}

尽管它打印函数的返回值而不是再次返回它,它仍然使用相同的表达式,您可以看到它根据x 的值:

103
107

(1) 或某种形式的等价物,例如指向函数指针数组的指针,或指向单个函数指针的指针(假设 x 始终在后一种情况下设置为零)。

关于c - 了解奇怪的返回语法 : return(*scriptFunction[x])(arguments);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33558115/

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