打印
[开发工具]

单片机指针和数组的疑问

[复制链接]
2646|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
poorhack|  楼主 | 2015-3-6 09:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、指针指向一个字符串:char_t *p="Hello World";
然后通过串口将这个字符串发送出去。
我记得这么写在vc上应该是没问题的吧,但是在mplab x ide上这么写就提示:illegal conversion between pointer types。
必须先将这个字符串放到数组里,再用一个指针指向这个数组,才能通过数组将它发送出去:
char_t ptr[]="Hello World";
char_t *m=ptr;

这时候再发送*m才正确。
这是不是开发平台的问题?其它单片机也是这样?

2、指针数组:
char *n[]={"man","women","girl","boy","sister"};
同样提示:illegal conversion between pointer types。
是不是只能定义一个二维数组?


沙发
兰天白云| | 2015-3-6 15:04 | 只看该作者
跟平台应该没关系,跟编译器有关系
在单片机系统开发中,字符串肯定放在FLASH或RAM里面,既然这样,先指定一个地方存放

使用特权

评论回复
板凳
yklstudent| | 2015-3-6 21:42 | 只看该作者
编译器的原因
XC8编译器下,你没有指定数据存放的位置;编译器就把字符串数据放到FLASH下了,应该是为了节省RAM考虑吧
XC8下,指向RAM的指针你指向FLASH,就会提示:
Warning [359] E:\MyPic\pic18f87j11_bus\software_proj\main.c; 16.32 illegal conversion between pointer types
pointer to const unsigned char -> pointer to unsigned char

使用特权

评论回复
地板
millenniumm| | 2015-3-6 23:30 | 只看该作者
在声明的时候加个const试试

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

198

帖子

6

粉丝