在空括号中加上一个星号(*)是什么意思?

48 浏览
0 Comments

在空括号中加上一个星号(*)是什么意思?

这个问题已经有了答案:

C语言中的函数指针是如何工作的?

这段C代码是做什么的?

{
    int (*func)();
    func = (int (*)()) code;
    (int)(*func)();
}

我对主题部分感到困惑。

admin 更改状态以发布 2023年5月25日
0
0 Comments

记得进行类型转换时,使用以下方法:

(type_to_cast) value;

当你想将某个value转换为特定type时使用。

还要记住定义函数指针的方法:

return_type (*pointer_name) (data_types_of_parameters);

函数指针的类型是

return_type (*) (data_types_of_parameters)

最后,你可以使用指针调用函数:

(*func_pointer)(arguments);

因此,记住这四点,你会发现你的C代码:

首先定义了一个函数指针func

其次,将code转换为函数指针,并将其值赋给func

第三,调用func指向的函数,并将返回的值转换为int

0
0 Comments

这是将一个指针强制转换成一个函数指针的过程。

序列int (*)() 表示一个接受不定数量的参数并返回int 类型的函数指针。将它包含在括号中,如(int (*)()),并与表达式结合使用,可以将表达式的结果转换成函数指针。

您提供的代码,包含注释:

// Declare a variable `func` which is a pointer to a function
int (*func)();
// Cast the result of the expression `code` and assign it to the variable `func`
func = (int (*)()) code;
// Use the variable `func` to call the code, cast the result to `int` (redundant)
// The returned value is also discarded
(int)(*func)();

0