全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
更新自动建库工具PCB Footprint Expert 2023.13 Pro / Library Expert 破解版

在PICC中如何用指针访问const 数组

[复制链接]
4805 0

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
PICC中如何用指针访问const 数组?
我从C51移植到PICC的程序,将存放在ROM中的数组 从code uchar String[]="I Love You!"; 改为const uchar String[]="I Love You!";
然后调用函数Compare_Data(uchar *Receive,uchar *Target,uchar strlen)来比较String[]和另外一个数组String1[]
uchar Compare_Data(uchar *Receive,uchar *Target,uchar strlen)
{
uchar i,temp;
for(i=0;i<strlen;i++)
{
  if(Receive[i]!=Target[i])
  {
   temp=1;
   break;  
  }   
}
if(temp) return (0);
else return (1);
}
Result=Compare_Data(String1,String,5);
但编译会出现如下信息:
Warning[000] D:\My Documents\PICC Files\UART Test\UART Test.C 45 : illegal conversion between pointer types
去掉const,将数组存放在RAM中,可编译成功。
但同样的程序在C51中是可以的(用code来代替const).
请问各位高手,在PICC中如何用指针访问const数组?
就是要用数组名做函数的参数。
-----------------------------------------------------------------------------------------------------------------------

const数组必须用const指针访问

指向ROM 常数的指针
如果一组变量是已经被定义在ROM 区的常数,那么指向它的指针可以这样定义:
const unsigned char company[]=”Microchip”; //定义ROM 中的常数
const unsigned char *romPtr; //定义指向ROM 的指针
程序中可以对上面的指针变量赋值和实现取数操作:
romPtr = company; //指针赋初值
data = *romPtr++; //取指针指向的一个数,然后指针加1
反过来,下面的操作将是一个错误,因为该指针指向的是常数型变量,不能赋值。
*romPtr = data; //往指针指向的地址写一个数

举报

回复
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

打开支付宝扫一扫,最高立得1212元红包
搜索

图文热点

更多

社区学堂

更多

客服中心

QQ:187196467 服务时间:周一至周日 8:30-20:30

关注我们

关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
快速回复 返回顶部 返回列表