C语言能通过函数的地址调用函数吗?
答案:4 悬赏:50 手机版
解决时间 2021-03-29 07:38
- 提问者网友:山高云阔
- 2021-03-28 09:41
C语言能通过函数的地址调用函数吗?
最佳答案
- 五星知识达人网友:怙棘
- 2021-03-28 10:45
1.当然可以,函数名即为函数指针,也是其地址。
只要定义一个函数指针(按照要调用的函数形式进行定义),将要调用的函数名赋予它,即可调用。
#include
typedef void(*pfun)(int x); // 指针函数:指向void返回,带参数int参数的函数
void output(int x)
{
printf("x: %d
", x);
}
int main()
{
pfun p = output; // 将output函数指针赋予p
p(10); // 通过函数指针调用函数
return 0;
}
只要定义一个函数指针(按照要调用的函数形式进行定义),将要调用的函数名赋予它,即可调用。
#include
typedef void(*pfun)(int x); // 指针函数:指向void返回,带参数int参数的函数
void output(int x)
{
printf("x: %d
", x);
}
int main()
{
pfun p = output; // 将output函数指针赋予p
p(10); // 通过函数指针调用函数
return 0;
}
全部回答
- 1楼网友:笑迎怀羞
- 2021-03-28 13:48
不可以的哦亲!
- 2楼网友:長槍戰八方
- 2021-03-28 12:10
当然可以通过函数的地址调用函数(有专门的函数指针),但不是&fun这样取法。正确的取法:
#include
void F(int i)
{
printf("F函数被调用!%d ",i);
}
int main()
{
typedef void (*Fun)(int);
Fun ff=F;//这样取法,不用加&号。
ff(3);
//以下跟以上意思一致。
void (*func)(int)=F;
func(4);
return 0;
}
- 3楼网友:西岸风
- 2021-03-28 11:34
可以通过函数指针(也就是你说的函数地址)调用,可以这样使用:
#include
int fun(int a)
{
printf("a = %d\n", a);
printf("hello world\n");
}
int main()
{
int (*pFun)(int a);
pFun = fun;
(*pFun)(123);
return 0;
}
输出结果:
123
hello world
#include
int fun(int a)
{
printf("a = %d\n", a);
printf("hello world\n");
}
int main()
{
int (*pFun)(int a);
pFun = fun;
(*pFun)(123);
return 0;
}
输出结果:
123
hello world
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯