本文包含原理图、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; //往指针指向的地址写一个数 |