社区
C语言
帖子详情
C语言中 *(void (*)(void))0xa0001000; 什么意思?
whz_20021423
2008-04-03 09:49:25
C语言中 *(void (*)(void))0xa0001000; 什么意思?
有高手说是 定义一个指向数组的指针 为什么是这样呢???
...全文
458
21
打赏
收藏
C语言中 *(void (*)(void))0xa0001000; 什么意思?
C语言中 *(void (*)(void))0xa0001000; 什么意思? 有高手说是 定义一个指向数组的指针 为什么是这样呢???
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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语言
的long是
什么意思
,
C语言
*(long*)0=0是
什么意思
?
既然你要解决问题,那我就不一一说错误原因了,有一点要注意,
C语言
是区分大小写的,P1_0和p1_0是不一样的。至于头文件,有时候我也根据自己的需要来添加代码,你复制我下面的代码到你工程下编译,看一下效果:#include <AT89X51.h>
void
main(
void
){unsigned int a;do{for (a=0; a<50000; a++);P1_0 = 0;fo...
C语言
再学习 -- 关键字
void
参看:
C语言
关键字
void
用途: 1、对函数返回的限定,用于强调函数没有返回值。如,
void
func(int x); 2、对函数参数的限定,用于强调函数没有任何参数。如,int func(
void
); 3、指向
void
的指针。如
void
*vp = NULL; 4、丢掉函数调用的返回值。如, int func(int x); (
void
)func(5); 5、(
void
)0,
嵌入式
C语言
知识总结
1 嵌入式
C语言
总结 从语法上来说
C语言
并不复杂, 但编写优质可靠的嵌入式C程序并非易事,不仅需要熟知硬件特性和缺陷,还需要对编译原理和计算机技术知识有着一定的了解。在这么多年的嵌入式开发
中
,我也积累了一些这方面的经验和思考,就希望总结下来,系统的阐述嵌入式
C语言
的重要知识点,就是这篇文章的由来。本文以自己在嵌入式上的实践为基础,在结合相关资料, 阐述嵌入式需要了解的
C语言
知识和重点,希望每个读到这篇文章的人都能有所收获。 1. 关键字 关键字是
C语言
中
具有特殊功能的保留标示符,按照功能可分为 ..
c语言
显示0 9的程序,数码管循环显示0-9
C语言
程序设计
原标题:数码管循环显示0-9
C语言
程序设计//用 数码显示器 数字0~9#include // 包含 寄存器定义的头文件/**************************************************函数功能:延时函数,延时一段时间***************************************************/
void
delay(
void
){uns...
关于二级指针
void
**的一点问题与思考
这两天写一个高并发内存池的项目时,遇到了一个关于二级指针的问题,剖析清楚后发觉有必要记录一下,这让我加深了对于C/C++
中
指针的理解(果然学到老活到老)。
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章