打印

求教关于keil编译出错的问题

[复制链接]
1895|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jack_shine|  楼主 | 2010-5-12 13:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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++;的地方出现这种错误,还望哪位大侠指点小弟此错啥意思,如何修改,谢谢了!
}

相关帖子

沙发
mohanwei| | 2010-5-12 14:27 | 只看该作者
在你的代码里,p是一个固定数组名,所以不能更改。
变通方法1:定义一个指针,把p赋给它;
变通方法2:用p[i]的方式来访问,i可以++也可以--

使用特权

评论回复
板凳
ayb_ice| | 2010-5-12 14:45 | 只看该作者
这里P就是数组指针的地址(也就是就是P的地址),当然不能改变

使用特权

评论回复
地板
numLiu| | 2010-5-12 15:22 | 只看该作者
uchar *p[]={array_1,array_5,array_9,array_0,array_1,array_7,array_8,array_6,array_7,array_5,array_3};
定义有问题。

使用特权

评论回复
5
ayb_ice| | 2010-5-12 15:58 | 只看该作者
LS
请问哪里有问题

使用特权

评论回复
6
tianma2005| | 2010-5-12 16:34 | 只看该作者
用p[i]来访问吧。

使用特权

评论回复
7
doomhaha| | 2010-5-12 16:39 | 只看该作者
*p[],p是数组名,数组中的每个元素是一个指针变量

使用特权

评论回复
8
jack_shine|  楼主 | 2010-5-13 09:05 | 只看该作者
2# mohanwei
谢谢,谢谢您的回复,不过下面有个类似的用法,没有报错,程序能够运行,同样是定义的指针数组,何解?还望大侠赐教,谢谢

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++;
}
}

使用特权

评论回复
9
jack_shine|  楼主 | 2010-5-13 09:07 | 只看该作者
3# ayb_ice
谢谢您的回复,参见#8的疑惑,还望赐教!

使用特权

评论回复
10
jack_shine|  楼主 | 2010-5-13 09:08 | 只看该作者
:)

使用特权

评论回复
11
jack_shine|  楼主 | 2010-5-13 09:08 | 只看该作者
:)

使用特权

评论回复
12
jack_shine|  楼主 | 2010-5-13 09:09 | 只看该作者
:)

使用特权

评论回复
13
jack_shine|  楼主 | 2010-5-13 09:09 | 只看该作者
:)

使用特权

评论回复
14
jack_shine|  楼主 | 2010-5-13 09:09 | 只看该作者
:):)

使用特权

评论回复
15
mohanwei| | 2010-5-13 10:03 | 只看该作者
8楼的void show_str(uchar add,uchar *p)里,*p是局部变量,存放在RAM里,当然能更改了……

使用特权

评论回复
16
jack_shine|  楼主 | 2010-5-13 13:31 | 只看该作者
15# mohanwei
哦,数组名表示一个数组的首地址,不能当变量使用吗,p++《=》p=p+1;难道非要重新赋给一个变量?谢谢了

使用特权

评论回复
17
epsmc| | 2010-5-13 17:23 | 只看该作者
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,

使用特权

评论回复
18
jack_shine|  楼主 | 2010-5-14 08:44 | 只看该作者
17# epsmc
恩,知道了,十分感谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:多关注自己专业的东西 网络上太多资料鸟,看来只适合查阅,不适合检阅鸭 技术交流群:206660396

3

主题

3044

帖子

2

粉丝