C语言 函数指针 的调用问题?函数指针 怎么用?最好有例子。。
3个回答
展开全部
#include<stdio.h>
//定义类型fun_ptr,它是一个函数指针,指向的函数返回值为int,参数为int
typedef int (*fun_ptr)(int);
//fun1
int fun1(int a)
{
printf("call fun1,pram=%d,return %d+1\n", a, a);
return a+1;
}
//fun2
int fun2(int a)
{
printf("call fun2,pram=%d,return %d+2\n", a, a);
return a+2;
}
int main(int argc, char *argv[])
{
int a = 10;
int s = 0;
//定义函数指针类型的变量p_fun
fun_ptr p_fun;
//指向fun1
p_fun = fun1;
//执行
s=p_fun(a);
printf("s=%d\n", s);
//指向fun2
p_fun = fun2;
//执行
s=p_fun(a);
printf("s=%d\n", s);
return 0;
}
执行结果:
展开全部
有函数: int fun(int a,int b);
要定义指向该函数的指针
对比指向 int a; 的指针
int *p; p = &a;
p的定义是怎么来的?
首先要保证p是一个指针类型
写下(*p),
然后,考虑下p的基类型,
p的基类型就是变量a的类型int
将int 放在(*p)前面就行了
int (*p);
括号可以省略,就成了 int *p;
同理
想要实现 pf = &fun;
(*pf) 将pf定义为一个指针,
将fun的类型作为pf的基类型
fun相当于一个 int (int a,int b)类型的量
int (int a,int b) (*pf);
基类型中有圆括号和中括号要后移
int (*pf)(int a,int b) ;//括号不能省略
pf = &fun;
调用时
(*pf)(3,4); pf(3,4)都可以
要定义指向该函数的指针
对比指向 int a; 的指针
int *p; p = &a;
p的定义是怎么来的?
首先要保证p是一个指针类型
写下(*p),
然后,考虑下p的基类型,
p的基类型就是变量a的类型int
将int 放在(*p)前面就行了
int (*p);
括号可以省略,就成了 int *p;
同理
想要实现 pf = &fun;
(*pf) 将pf定义为一个指针,
将fun的类型作为pf的基类型
fun相当于一个 int (int a,int b)类型的量
int (int a,int b) (*pf);
基类型中有圆括号和中括号要后移
int (*pf)(int a,int b) ;//括号不能省略
pf = &fun;
调用时
(*pf)(3,4); pf(3,4)都可以
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你的参数传递的实是指针,那么这个参数就是实参 不是你所说的形参。
怎么跑到这个题下了?那就简单的说下,不多说,看code:
定义:
void (*fp)(int x);//函数指针;
int function(int x)
{return x;}
调用:
fp = function;
fp(2);
怎么跑到这个题下了?那就简单的说下,不多说,看code:
定义:
void (*fp)(int x);//函数指针;
int function(int x)
{return x;}
调用:
fp = function;
fp(2);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询