一个问题请教高人

[复制链接]
2911|8
 楼主| mb4555 发表于 2012-9-3 17:45 | 显示全部楼层 |阅读模式
首先已经定义了:uchar data writeadr;
                       uchar   data *port _at_ 0x7F ;
问:
port=(uchar data *)writeadr;
右边的赋值是什么意思?
znmcu 发表于 2012-9-3 18:18 | 显示全部楼层
指针强转,我发现一遇指针很多人都犯迷糊
把变量的值转为指针。也就是把变量的值转为地址。char *p=(uchar *)1234;
一个道理。
80%的问题来源于c语言。
airwill 发表于 2012-9-3 19:16 | 显示全部楼层
楼上正解. 指针而已, 还没有出现复杂的定义呢.
建议楼主再好好啃啃 C 语言教材.
谈的元 发表于 2012-9-3 19:17 | 显示全部楼层
例子
port=(uchar data *)writeadr;
writeadr=0x12;
*port=0x55;
运行后地址为0X12的变量的大小就变为0X55了

我的应用举例:

1. 给一段内存清0,给一段堆栈赋值,观察堆栈使用情况

2.调试代码:用串口修改 writeadr大小 ,串口将*port发送出来,这样你想观察哪个变量就可以观察哪个变量了,很方便
3.读某处FLASH的值
huangqi412 发表于 2012-9-3 19:31 | 显示全部楼层
开心果219407 发表于 2012-9-3 20:03 | 显示全部楼层
指针数组 转换
开心果219407 发表于 2012-9-3 20:04 | 显示全部楼层
1# mb4555
指针数组
 楼主| mb4555 发表于 2012-10-27 22:21 | 显示全部楼层
port=(uchar data *)writeadr;

了解了
就是把writeadr之中数据(只取低8位)作为指针变量,
 楼主| mb4555 发表于 2013-5-19 20:18 | 显示全部楼层
先结贴了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

30

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部