在空括号中加上一个星号(*)是什么意思?
在空括号中加上一个星号(*)是什么意思?
这个问题已经有了答案:
这段C代码是做什么的?
{ int (*func)(); func = (int (*)()) code; (int)(*func)(); }
我对主题部分感到困惑。
admin 更改状态以发布 2023年5月25日
记得进行类型转换时,使用以下方法:
(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
。
这是将一个指针强制转换成一个函数指针的过程。
序列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)();