例如我现在看的原子哥的内存管理实验(探索者开发板)
其中有如下的一个结构体
1>这是该实验中的一个结构体
[mw_shl_code=c,true]struct _m_malloc_dev
{
void (*init)(u8); /* 就以这个来说明吧 */
u8 (*perused)(u8);
u8 *membase[SRAMBANK];
u16 *memmap[SRAMBANK];
u8 memdry[SRAMBANK];
};[/mw_shl_code]
2>以其中第一个成员为例,我们对这个函数指针进行初始化, 初始化结构体指针为my_mem_init
3>于是:我们就需要定义如下一个函数
void my_mem_init(u8 memx)
{
}
请问大神:按照前面的函数指针定义:我觉的这个函数应该采用如下形式
void (*my_mem_init)(u8 memx)
{
}
是我哪里理解错了,恳请大神指教
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
void my_mem_init(u8 memx)
{
}
malloc_dev.init = my_mem_init;
函数名可以直接赋值给函数指针变量
---------------------------------
是啊,函数名可以直接赋值给函数指针变量,
那么如上的void (*init)(u8) 函数直接将init换成my_mem_init,不就变成了 void (*my_mem_init)(u8)了嘛
---------------------------------
结构体里 表明 此处是指针类型
函数名即是指针
剩下的自己想吧
void perused(u8); //一般函数定义,perused为函数名(已固定)
void *perused(u8); //返回(void *)指针函数,perused为函数名(已固定)
void (*perused)(u8); //一般函数定义,perused为指向函数的指针,可被重新赋值
而函数名本身就是一个指针
一周热门 更多>