社区
C语言
帖子详情
C语言中 *(void (*)(void))0xa0001000; 什么意思?
whz_20021423
2008-04-03 09:49:25
C语言中 *(void (*)(void))0xa0001000; 什么意思?
有高手说是 定义一个指向数组的指针 为什么是这样呢???
...全文
443
21
打赏
收藏
C语言中 *(void (*)(void))0xa0001000; 什么意思?
C语言中 *(void (*)(void))0xa0001000; 什么意思? 有高手说是 定义一个指向数组的指针 为什么是这样呢???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yangb2014#
2008-04-06
打赏
举报
回复
sorry:错别字,
---------------------------------------------
to 楼上:
bootloader会这么用,
从ROM中把系统
映象
copy到RAM中,然后从RAM开始运行。。。
yangb2014#
2008-04-06
打赏
举报
回复
to 楼上:
bootloader会这么用,从ROM中把系统影响copy到RAM中,然后从RAM开始运行。。。
yyjzsl
2008-04-06
打赏
举报
回复
要真在工作中,写这样的程序,老板不会喜欢你的。。。
wangbin995
2008-04-06
打赏
举报
回复
[Quote=引用 17 楼 whz_20021423 的回复:]
这里有搞嵌入式的吗??
这条语句是在嵌入式里用的 ,
我也觉得是函数指针,但 出题人信誓旦旦的说是 “指向数组的指针” , 这是为什么呢??
[/Quote]
拿大耳光抽他
whz_20021423
2008-04-06
打赏
举报
回复
这里有搞嵌入式的吗??
这条语句是在嵌入式里用的 ,
我也觉得是函数指针,但 出题人信誓旦旦的说是 “指向数组的指针” , 这是为什么呢??
stude
2008-04-04
打赏
举报
回复
是的啊
vagrantfish
2008-04-04
打赏
举报
回复
[Quote=引用 15 楼 dingmin8701 的回复:]
学习了
[/Quote]
dingmin8701
2008-04-04
打赏
举报
回复
学习了
Akron
2008-04-04
打赏
举报
回复
(void (*)(void))0xa0001000 是把 0xa0001000 强制成函数指针(程序地址),而
* (void (*)(void))0xa0001000 则为通过函数指针运行函数。因而
* (void (*)(void))0xa0001000 是从 0xa0001000 地址处运行程序。
billy1985
2008-04-04
打赏
举报
回复
就是一个函数指针
sailinghz
2008-04-04
打赏
举报
回复
首先看这个声明void (*pf)(void); 这个是对一个函数指针的声明,其中pf是指向一个返回值为void类型函数的指针,这个函数的参数也是void类型。由此可见(void (*)(void))是一个类型,表示的是一个“指向返回值为void类型的函数的指针”的类型转换符。所以,*(void (*)(void))0xa0001000是表示将0xa0001000转换成一个指向(void (*)(void))类型的指针。
若是不明白的话,可以看《C语言陷阱与缺陷》的第二章语法陷阱,里面有详细的介绍
用户 昵称
2008-04-04
打赏
举报
回复
这是函数指针
ONLYBLUEMOON
2008-04-04
打赏
举报
回复
兄弟。说具体点。
长安宁
2008-04-04
打赏
举报
回复
上面也可以写成 pp *pc=(pp *)0xa0001000的展开形式而已;
长安宁
2008-04-04
打赏
举报
回复
*(void (*)(void))0xa0001000;
typedef void ( *pp)(void); //这个声明你能理解吗?这里的pp 是一个指向(返回值是 void ,形参是void 的函数的)指针;
那么 int a=3;int p=(int)a; //这种格式的强制转换很容易理解吧;
pp *pc = (pp *)(void (*)(void))0xa0001000; //这里只不过是一个把一个东西(0xa0001000),强制转换的例子;很好理解;
Akron
2008-04-03
打赏
举报
回复
一句话:从 0xa0001000 地址处运行程序。
evanever
2008-04-03
打赏
举报
回复
[Quote=引用 1 楼 ttkk_2007 的回复:]
这是把0xa0001000转换成一个函数指针(返回void,参数为void),然后提取函数入口地址
[/Quote]
恩 是的。
Inhibitory
2008-04-03
打赏
举报
回复
推荐看C语言陷阱,里面对(void (*)(void)0)()这个讲得很清楚,如果看懂了,再看这个就不成问题了.
liuzewei
2008-04-03
打赏
举报
回复
[Quote=引用 1 楼 ttkk_2007 的回复:]
这是把0xa0001000转换成一个函数指针(返回void,参数为void),然后提取函数入口地址
[/Quote]
HOHO,支持```
WingForce
2008-04-03
打赏
举报
回复
我怎么看到一个函数指针捏。。。
加载更多回复(1)
C
语言
--视频精讲
C
语言
作为被长期使用的编程
语言
,可以被运用到各种操作系统,游戏,开发
中
。本课程作为互联网上首家使用C99录制的C
语言
教程,展现了全面、专业。标准的C
语言
教程。可以帮助学员从基础开始一点点的深刻理解C
语言
。
c
语言
的long是什么
意思
,C
语言
*(long*)0=0是什么
意思
?
既然你要解决问题,那我就不一一说错误原因了,有一点要注意,C
语言
是区分大小写的,P1_0和p1_0是不一样的。至于头文件,有时候我也根据自己的需要来添加代码,你复制我下面的代码到你工程下编译,看一下效果:#...
C
语言
指针
void
bubble(
void
*base, int count, int size, int(*cmp)(
void
*,
void
*)){ int i = 0, j = 0; for (i = 0; i ; ++i){ for (j = 0; j ; ++j){ if (cmp((char *)base + j*size, (char *)base + (j + 1)*size...
c
语言
显示0 9的程序,数码管循环显示0-9 C
语言
程序设计
9 C
语言
程序设计//用 数码显示器 数字0~9#include // 包含 寄存器定义的头文件/**************************************************函数功能:延时函数,延时一段时间********************************************...
C
语言
中
a&0x0表示什么?
0x0表示什么?一:说明1.在C
语言
中
,&可以用作取地址和按位与操作两种运算。不过取地址是针对变量的,当前&后是一个常量,在C
语言
中
不允许取地址操作,所以这个是语句的一部分,前面还要有一个操作...
C语言
69,381
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章