单片机编程。 keil中数组指针怎么用才规范呢?一直提示C182警告

,打扰一下,单片机编程。 keil中数组指针怎么用才规范呢?一直提示C182警告?

我的本意是让数组指针bbb可以指向任意一个char数组,
在调用函数的时候给bbb赋值,然后在函数中可以利用(*p)[1]这样的形式来从数组取数
但是keil一直提示“warning c182: pointer to different objects ”
简化程序如下,求指点啊!!!!

#include <reg52.h>
char (*bbb)[3];

char aaa[3]={1,2,3};
void main()
{
bbb=&aaa;

while(1);
}
不是很懂。数组指针没用过,我是看百科提供的例子写的:
http://www.baidu.com/s?ie=utf-8&bs=51%E5%8D%95%E7%89%87%E6%9C%BA+%E5%BC%95%E8%84%9A+%E8%BE%93%E5%87%BA%E7%94%B5%E6%B5%81&f=8&rsv_bp=1&rsv_spt=3&wd=%E6%95%B0%E7%BB%84%E6%8C%87%E9%92%88&rsv_sug3=8&rsv_sug=0&rsv_sug4=305&rsv_sug1=5&inputT=2028

原文就是:
“数组指针的定义
数组名的指针,即数组首元素地址的指针。即是指向数组的指针。
例:int (*p)[10]; p即为指向数组的指针,又称数组指针。

我在写个单片机的程序,所以用keil。
有个显示函数,每次调用的时候希望它能显示不同的内容,各种需要显示的内容我保存在不同数组里。所以想用数组指针当入口参数来实现这个功能。
如果这样写是错的,应该怎么写呢?

希望有人能给个详细点的例子实现上述功能。
请不要避开数组指针,因为我就是要学着用
最新回答
ヽ冷艳°皇后

2024-07-02 00:01:30

char* b;

char a[3]={1,2,3};
void main()
{
b=&a;
unsigned char i,vaule;

for(i=0;i<n;i++,b++) {
vaule=*b;}

就可以循环取出数组的值并赋值给 vaule了 或者 直接取a[2]的话就 *(b+2)就得了,为什么弄得那么复杂。指针+1就是表示取地址后面那个数了,自加就可以不断取后面的数
﹎梦醒的夏天╰╯

2024-07-02 00:04:52

把选项卡中的Warinings降低一级就可以了,可选0级或者1级就没有警告了~

过期关系

2024-07-02 00:15:34

比如以下显示调用就是你说的情况。可以这样来处理
void LCD_Print(unsigned char x, unsigned char y, unsigned char *str)
{
  GotoXY(x,y);
  Print(str);
}
......................
dis[0]= Hour/10+0x30;
dis[1]= Hour%10+0x30;
dis[2]= ':';
dis[3]= Min_High;
dis[4]= Min_Low;
dis[5]= ':';
dis[6]= Sec_High;
dis[7]= Sec_Low;
LCD_Print(0,0,dis);
.....................
梦明

2024-07-02 00:04:57

直接声明成char* bbb;就可以了。
你那样声明反而声明不符,而且在函数中也不能那样取偏移。
追问
能不能给个具体例子,我不是很明白。
如果改成*bbb,那就是普通指针的,指向数组时还是出错
自古美人都是妖

2024-07-02 00:05:48

如果只是为了写C,就不要用KEIL,keil不是专门为C而开发的