|
来源:http://www.nycht.com/pic16bbs/dispbbs.asp?boardid=6&id=262&star=1
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; //往指针指向的地址写一个数 |