社区
C语言
帖子详情
C语言中 *(void (*)(void))0xa0001000; 什么意思?
whz_20021423
2008-04-03 09:49:25
C语言中 *(void (*)(void))0xa0001000; 什么意思?
有高手说是 定义一个指向数组的指针 为什么是这样呢???
...全文
488
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)
S3C2440裸板程序之MMU
本实例将开启MMU, 将虚拟地址0xA0000000~
0xA0001000
0映射到 物理地址 0x56000000~0x56100000,这样就可以通过操作地址0xA0000050,0xA0000054来控制3个LED的亮灭。 head.S .text .global _start _start: ldr sp, =4096 @ 设置栈指针,调用C函数之前要设好栈 b...
北斗短报文RDSS协议实战:手把手教你用
C语言
搞定GBK
中
文编码与数据转换
本文详细解析北斗短报文RDSS协议
中
的GBK
中
文编码与数据转换技术,通过
C语言
实战演示如何在嵌入式系统
中
高效处理混合数据传输。文章涵盖GBK编码拆解、浮点数转换优化、内存管理策略及异常处理机制,帮助开发者在资源受限环境下实现稳定可靠的北斗通信功能。
STM32 XIP 启动实战:QSPI Flash 链接脚本配置与 0x90000000 地址映射详解
本文详细解析了STM32 XIP启动技术,重点介绍了QSPI Flash的链接脚本配置与0x90000000地址映射的实现方法。通过硬件设计要点、初始化流程及性能优化技巧,帮助开发者高效实现外部存储器代码执行,适用于需要大容量代码存储的应用场景。
CRC校验原理与C/Python实现:从校验和到循环冗余校验的工程实践
在数据传输与存储
中
,数据完整性校验是确保信息可靠性的基础技术。校验和(Checksum)作为早期简单方案,通过累加和取模运算检测错误,但存在漏检率高的局限。循环冗余校验(CRC)基于二进制多项式模2运算原理,通过生成多项式进行除法运算得到校验码,其核心是利用异或和移位操作实现高效计算。CRC技术价值在于其强大的错误检测能力,尤其是CRC32能检测几乎所有短突发错误,误判概率极低,成为数据可靠性的关键保障。该技术广泛应用于嵌入式开发、网络通信(如以太网帧)、文件格式(如ZIP、PNG)及工业协议(如Modbu
AM275x硬件防火墙配置实战:从寄存器手册到安全内存保护
内存保护单元(MPU)和硬件防火墙是现代嵌入式系统,尤其是汽车电子和工业控制领域实现功能安全与信息安全的核心硬件机制。其基本原理是通过硬件实现的访问控制规则,对处理器总线上的内存访问进行实时检查与过滤,防止越权访问和恶意代码攻击,是构建高可靠实时系统的基石。在TI AM275x这类高性能异构处理器
中
,CBASS防火墙提供了基于区域(Region)的精细化管理模型,支持对安全状态、特权等级、主设备标识、访问类型乃至缓存属性进行多维度的权限控制,技术价值在于为满足ASIL-D/SIL-3等严苛安全认证提供了硬件
C语言
70,040
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章