keil编译出错

[复制链接]
2876|17
 楼主| chuxh 发表于 2011-8-22 14:28 | 显示全部楼层 |阅读模式
uchar code array_1[6]={0x40,0x1f,0xff,0xff,0x00,0x1f};
uchar code array_5[8]={0xfe,0x1f,0x44,0x1f,0x44,0x2f,0x47,0xcf};
uchar code array_9[8]={0x7c,0x0f,0x82,0x1f,0x82,0x2f,0x7f,0xcf};
uchar code array_0[8]={0x7f,0xef,0x80,0x1f,0x80,0x1f,0x7f,0xef};
uchar code array_7[8]={0x80,0x0f,0x83,0xff,0x84,0x0f,0xf8,0x0f};
uchar code array_8[8]={0x7b,0xef,0x84,0x1f,0x84,0x1f,0x7b,0xef};
uchar code array_6[8]={0x3f,0xef,0x44,0x1f,0x84,0x1f,0x03,0xef};
uchar code array_3[8]={0x40,0x2f,0x84,0x1f,0x84,0x1f,0x7b,0xef};
uchar *p[]={array_1,array_5,array_9,array_0,array_1,array_7,array_8,array_6,array_7,array_5,array_3};

void phone_no_move()
{
while(*p!='\0')
{
  no_code=*p;
  send_cmd(0x0f00|no_code);
         p++;
         }
}

我写的代码如上,定义了一个指针数组,然后编译出现“p”:not a lvalue,
p++;的地方出现这种错误,还望哪位大侠指点小弟此错啥意思,如何修改,谢谢了!
}
llljh 发表于 2011-8-22 14:51 | 显示全部楼层
在你的代码里,p是一个固定数组名,所以不能更改。
 楼主| chuxh 发表于 2011-8-22 15:02 | 显示全部楼层
怎么办
dingy 发表于 2011-8-22 15:05 | 显示全部楼层
定义一个指针,把p赋给它
llljh 发表于 2011-8-22 15:14 | 显示全部楼层
用p[i]的方式来访问,i可以++也可以--
司徒老鹰 发表于 2011-8-22 15:25 | 显示全部楼层
这里P就是数组指针的地址(也就是就是P的地址),当然不能改变
supernan 发表于 2011-8-22 15:33 | 显示全部楼层
uchar *p[]={array_1,array_5,array_9,array_0,array_1,array_7,array_8,array_6,array_7,array_5,array_3};
定义有问题。
renyaq 发表于 2011-8-22 15:41 | 显示全部楼层
用p[i]来访问吧。
pengf 发表于 2011-8-22 15:53 | 显示全部楼层
*p[],p是数组名,数组中的每个元素是一个指针变量
 楼主| chuxh 发表于 2011-8-22 16:07 | 显示全部楼层
下面有个类似的用法,没有报错,程序能够运行,同样是定义的指针数组,何解?还望大侠赐教,谢谢

uchar code str1[]="2010上海世博会";
uchar code str2[]="隆重开幕";
uchar code str3[]="热烈欢迎您";
uchar code str4[]="welcome!";
uchar *p[]={str1,str2,str3,str4};

void show_str(uchar add,uchar *p)
{
LCD12864_drive(0,add);//写入显示的首地址
while(*p!='\0')
{
   LCD12864_drive(1,*p);//向液晶写入数据
   p++;
}
}
zwll 发表于 2011-8-22 16:10 | 显示全部楼层
void show_str(uchar add,uchar *p)里,*p是局部变量,存放在RAM里,当然能更改了……
llljh 发表于 2011-8-22 16:13 | 显示全部楼层
数组名表示一个数组的首地址,不能当变量使用吗,p++《=》p=p+1;难道非要重新赋给一个变量?
栩栩如生 发表于 2011-8-22 16:15 | 显示全部楼层
uchar *p[]={array_1,array_5,array_9,array_0,array_1,array_7,array_8,array_6,array_7,array_5,array_3};
P是固定地址,不可++;
要改变另外定义个unsigned char *p1,把p的地址作为p1的初值。
例1错,例2对;因为例2的指针参数P非uchar *p[]的P,
 楼主| chuxh 发表于 2011-8-22 16:44 | 显示全部楼层
那图能再清晰嗲点就好了
 楼主| chuxh 发表于 2011-8-22 17:10 | 显示全部楼层
结贴了
lichuanfa 发表于 2011-8-23 07:53 | 显示全部楼层
15# chuxh
unchar code *p;
bily198310 发表于 2011-8-23 10:38 | 显示全部楼层
又学了一点指针的知识
zwll 发表于 2011-8-25 10:06 | 显示全部楼层
用p[i]来访问吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

936

主题

11296

帖子

2

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