C语言函数指针的问题

如下typedefstructStateStruct{void(*FuncPtr)(void*ptr);}SS;这里void(*FuncPtr)和(void*ptr)这两... 如下
typedef struct StateStruct {
void (*FuncPtr)( void * ptr );
}SS;
这里void (*FuncPtr)和( void * ptr )这两个指针有什么关系吗,谁能帮我详细解释一下这个结构体的定义,谢谢 阿!
展开
 我来答
ecrasyy
2013-07-28 · TA获得超过309个赞
知道小有建树答主
回答量:308
采纳率:0%
帮助的人:177万
展开全部
typedef struct StateStruct {
void (*FuncPtr)( void * ptr ) f;
}SS;    
//定义了一个新的类型,这个类型是个结构体,类型名是SS
//下面声明一个SS类型的变量
SS s;
//s就是一个SS类型的变量
void (*FuncPtr)( void * ptr );
//是一个类型名,类型是FuncPtr,这是一个函数指针类型,这个函数指针类型是返回值是void,接受一个void*的指针地址的参数。
//一般使用typedef语法来用
typedef void (*FuncPtr)( void * ptr );
typedef struct StateStruct {
FuncPtr fp;
}SS;

承上

void f(void *ptr)
{
}
//函数f就是一个funcPtr类型的函数。
//可以以下面的方法赋值:
s.fp = f;

 

const SS St_StateInit = { (void (*)(void *))State_Init };
//用下面的写法会好看很多
const SS St_StateInit = { (FuncPtr)State_Init };
//这是用State_Init来初始化fp的值。
White_MouseYBZ
2013-07-28 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6594万
展开全部
(*FuncPtr)说明FuncPtr是个指针,它指向有一个形式参数void * ptr的函数,这函数没有返回值。
追问
谢谢,那还请教我继续定义const SS St_StateInit = { (void (*)(void *))State_Init };
这个怎么解释阿,谢啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tianlansefy
2013-07-28 · 超过13用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:35万
展开全部
该结构体表示存储了一个形如void funcName(void *ptr)类型的函数指针(其实就是函数名了)。比如你有一个函数void test(void *ptr),同时有一个上述结构体SS newStruct,那么就可以有下面的操作newStruct.FuncPtr = test。这样一来如果执行 newStruct.Funcptr(ptr)就相当于执行了test函数,传递的参数是ptr。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式