错误。fun 是函数名,代表函数地址,但 *fun 是尝试对函数地址进行解引用,这是不合法的,因为函数名不是一个指向具体数据(如整数或结构体)的指针,而是一个指向函数体的指针。
B. P = fun;
正确。这里将函数名 fun(即函数的地址)赋给了函数指针 P。这是使函数指针指向函数的正确方法。
C. P = fun(i, j);
错误。fun(i, j) 是调用函数 fun 并传递参数 i 和 j,它返回一个 int 类型的值。这个返回值不能赋给函数指针 P。
D. P = &fun;
在大多数情况下,这是正确的,但在C语言中,函数名本身就是函数的地址,所以 &fun 和 fun 在大多数情况下是等价的。然而,根据C标准,函数设计符(即函数名)和函数指针之间有一些微妙的差异,特别是在涉及类型转换和函数指针数组时。但在这个简单的上下文中,P = fun; 和 P = &fun; 实际上会产生相同的效果,因为编译器会将 fun 解释为其地址。然而,为了保持代码的一致性和清晰性,通常建议使用 P = fun;,因为这是更常见的做法。不过,就本题的答案而言,这个选项本身并不是错误的,只是在这个特定情境下与B选项等效。
登录后提交答案