例如我现在看的原子哥的内存管理实验(探索者开发板)
其中有如下的一个结构体
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)
{
}
是我哪里理解错了,恳请大神指教
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
a=(int *)p 是强制转换,跟本贴关系不大。
你的例子用变量来说是这样:
有个指针int *p1;你想给这个p1赋值(或是你说的初始化)。
你又int *p2;然后你使p1=p2;这就叫赋值了?
p1,p2都是未被初始化的指针,你怎么能拿p2去初始化p1?
你应该这样做:
int a;
int *p = &a;
这样p就被初始化了,有了具体的指向。
函数指针同理:
你想初始化void (*init)(u8);
你就得定义一个void abc(u8 c);
然后可以使init = &abc;
由于函数名本身就是函数的地址,所以就写成init = abc;就可以了.
一周热门 更多>