C语言函数指针请教

2019-07-20 09:52发布

void (*Aa)();//定义一个函数指针Aa
void Bb(u8 A,u8 B)//自定义的函数Bb
{
A++;
B++;
}

void main(void)
{
Aa = (void(*)(u32))Bb;//这个地方的写法我不太明白
Aa(1,1);
while(1)
{}
}


问题内容:Aa是一个指针,应该给他赋值的是一个地址, (void(*)(u32))Bb是把Bb地址取出来吗?这里为什么不能写成&Bb?希望详细解释一下 (void(*)(u32))Bb这句的含义。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
操作系统
1楼-- · 2019-07-20 22:26
本帖最后由 操作系统 于 2018-1-18 10:49 编辑
ysplm 发表于 2018-1-18 10:18
Bb本身是一个地址,写成Aa=Bb,也是不对的,为什么要在前面加(void(*))这个呢?我就是不太理解这个,还 ...

void (*Aa)(void);//定义一个函数指针Aa
void Bb(void)//自定义的函数Bb
{
.....
}

void main(void)
{
Aa =  Bb;//类型 对了.就可以直接,赋值
Aa();
while(1)
{}
}
和你讲不清.好累.自己去百度吧.

操作系统
2楼-- · 2019-07-21 03:35
Arya 发表于 2018-1-18 10:34
&Bb与Bb应该都可以吧

怎么会都可以呢.你试试看..
wangmingwei093
3楼-- · 2019-07-21 05:04
 精彩回答 2  元偷偷看……
ysplm
4楼-- · 2019-07-21 07:34
 精彩回答 2  元偷偷看……
kmmmko
5楼-- · 2019-07-21 08:46
操作系统 发表于 2018-1-18 10:44
怎么会都可以呢.你试试看..

确实是都可以的哈,虽然说函数名本来就是地址,但是加个取地址也是对的,就跟数组名一样,只是数组名加了取地址符后类型变了,但值是一样的。
Funvee
6楼-- · 2019-07-21 09:28
 精彩回答 2  元偷偷看……

一周热门 更多>