找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2491|回复: 6
打印 上一主题 下一主题
收起左侧

【问题】关于51指针的程序错误,求解答

[复制链接]
跳转到指定楼层
楼主

这个是按书上写的程序
*ptrTxd 和 array1[]都是定义成unsigned char型的
但是编译的时候却被警告(ptrTxd = array1;警告错误),并且程序下载到单片机里并没有实现相应的功能


然后我把ptrTxd = array1;改成了ptrTxd =& array1[0];就没有警告了,并且程序的结果是对的。



但是这两种数组元素指针的表达是等价的,都是对的。所以不太明白其中出现了什么问题!
有知道的大神帮忙解答一下吗?谢谢了!




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:153041 发表于 2017-2-27 15:41 | 只看该作者
应该是51的C编译器特性,和标准C在编译处理上有很大的差异。
回复

使用道具 举报

板凳
ID:111634 发表于 2017-2-27 16:27 | 只看该作者
本帖最后由 zl2168 于 2017-2-27 16:37 编辑

一般的程序何必一定要用指针?有些单片机教材说:没有掌握指针,就等于没有掌握c语言,真是耸人听闻,令初学者望而生畏。
对一般c语言应用,似乎还有些道理。对c51编程,就没有道理!中小规模应用程序,包括不很复杂的大规模应用程序,不用指针,完全可以应付。例如,张志良编著的《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1,内有常用的单片机应用100案例,一个也未用指针,用数组不是照样实现各种较复杂的功能?原因是什么?因为80C51单片机本身具有间址功能。
回复

使用道具 举报

地板
ID:166942 发表于 2017-2-27 16:34 | 只看该作者
表示我也遇到过这个问题
回复

使用道具 举报

5#
ID:166942 发表于 2017-2-27 16:35 | 只看该作者
表示我也遇到过这个问题
回复

使用道具 举报

6#
ID:126286 发表于 2017-3-1 12:09 | 只看该作者
好像是编译器的问题,同样的把array1强制类型转换(unsigned char *)一样可以,结果也正确。
回复

使用道具 举报

7#
ID:126286 发表于 2017-3-1 12:10 | 只看该作者
utzuzu 发表于 2017-2-27 15:41
应该是51的C编译器特性,和标准C在编译处理上有很大的差异。

嗯嗯,确实。我把array1强制类型转换就对了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表