[开发工具] 单片机指针和数组的疑问

[复制链接]
2844|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

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