打印

指针能这样用吗?

[复制链接]
1273|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
victor3l|  楼主 | 2012-7-12 16:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ulong  FilChOne( ulong *point, ulong temp)
{
uchar i ;
xdata ulong avrVal = 0;
*(point + 7) = temp;
for(i = 0; i < 8; i++)
{
  *(point + i) = *(point + i + 1);//数据平移
  avrVal += *(point+i);
}

avrVal = (avrVal >> 3);
return avrVal;
}

上面函数中的*point 作用是指向一个存储temp数据的队列。我在调用该函数前会定义个ulong的数组,并且把读到的AD值传给temp.我想实现滑动滤波。我有6路AD需要滤波,所以我想在外面定义6个ulong型的数组,让读到每路Ad值放在不同的队列中,以免在调用多路是出现彼此干扰,早成数据混乱。
但是我现在用1路的Ad值来滤波达不到滤波的效果,并且数据很奇怪,请问上面的函数能实现滑动滤波吗?是不是指针使用有误啊?当我不用指针也按照这个思路写的滤波能用的。

相关帖子

沙发
fantasy001| | 2012-7-12 16:30 | 只看该作者
avrVal 漏加temp

使用特权

评论回复
板凳
李冬发| | 2012-7-12 23:43 | 只看该作者
可以,我更喜欢使用point[i]

使用特权

评论回复
地板
sfesdm| | 2012-7-13 00:15 | 只看该作者
你传给point 指针的实参要为数组或指针,6个ulong型的数组,  *(point + 7)就已经造成数组越界了,该指针访问的最大偏移量为5,而编译器并不会检查数组越界的问题,所以就不会报错。访问超出数组范围的数据,当然会出现莫名其妙的问题了。

使用特权

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

本版积分规则

77

主题

308

帖子

5

粉丝