找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

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

[复制链接]
admin 发表于 2010-6-19 22:01:32 | 显示全部楼层 |阅读模式

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

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

×
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; //往指针指向的地址写一个数
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-22 10:03 , Processed in 0.054376 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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