打印

keil编译出错

[复制链接]
1994|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赋给它

使用特权

评论回复
5
llljh| | 2011-8-22 15:14 | 只看该作者
用p[i]的方式来访问,i可以++也可以--

使用特权

评论回复
6
司徒老鹰| | 2011-8-22 15:25 | 只看该作者
这里P就是数组指针的地址(也就是就是P的地址),当然不能改变

使用特权

评论回复
7
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};
定义有问题。

使用特权

评论回复
8
renyaq| | 2011-8-22 15:41 | 只看该作者
用p[i]来访问吧。

使用特权

评论回复
9
pengf| | 2011-8-22 15:53 | 只看该作者
*p[],p是数组名,数组中的每个元素是一个指针变量

使用特权

评论回复
10
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++;
}
}

使用特权

评论回复
11
zwll| | 2011-8-22 16:10 | 只看该作者
void show_str(uchar add,uchar *p)里,*p是局部变量,存放在RAM里,当然能更改了……

使用特权

评论回复
12
llljh| | 2011-8-22 16:13 | 只看该作者
数组名表示一个数组的首地址,不能当变量使用吗,p++《=》p=p+1;难道非要重新赋给一个变量?

使用特权

评论回复
13
栩栩如生| | 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,

使用特权

评论回复
14
chuxh|  楼主 | 2011-8-22 16:44 | 只看该作者
那图能再清晰嗲点就好了

使用特权

评论回复
15
chuxh|  楼主 | 2011-8-22 17:10 | 只看该作者
结贴了

使用特权

评论回复
16
lichuanfa| | 2011-8-23 07:53 | 只看该作者
15# chuxh
unchar code *p;

使用特权

评论回复
17
bily198310| | 2011-8-23 10:38 | 只看该作者
又学了一点指针的知识

使用特权

评论回复
18
zwll| | 2011-8-25 10:06 | 只看该作者
用p[i]来访问吧。

使用特权

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

本版积分规则

936

主题

11296

帖子

2

粉丝