为什么用指针会出这种警告?

发布: 2009-10-02 13:50 | 作者: 白日按菜肴 | 来源: StmFans思蜕盟 OPELC 自由电子联盟

程序大概类似这样:
#pragma location=0xOOOO
uc8 F11;
uc16 F12;
uc32 F13;
......
......
uc8 F34;
uc8 Verification;

u8 main(void)
{
...
u8 *p,*q, tmp=0;
for (*p=F11,*q=Verification; p<q; p++)
  tmp += *p++;

if (tmp!=Verification)
  校验错误处理程序。

可是为什么会出这种警告:
Warning[Pe549]: variable "p" is used before its value is set

怎样才能消除这种警告呢?
binglin (2009-10-02 20:56:31)
具体是那一行出现这个警告?
白日按菜肴 (2009-10-02 21:01:55)
for (*p=F11......)这一行。
binglin (2009-10-02 21:16:08)
P++后就不是指向原来地址(变量或内容)了。
void_c (2009-10-03 08:40:34)
variable "p" is used before its value is set

指针p在没有赋初值,就进行了*p操作,这在C语言编程中绝对要禁止的。
白日按菜肴 (2009-10-03 14:29:54)
金虹兄是对的,我理解错了指针赋值。
*p=F11 是把F11的值填进P所指的单元,而原来误解为把FF的地址传给P。

p=&F11才是对的。
taishandadi (2009-10-04 11:11:02)
野指针要注意。
simonqian (2009-10-04 15:41:11)
好。。。。。。危险。。。。。。
binglin (2009-10-04 17:16:48)

QUOTE:

variable "p" is used before its value is set

指针p在没有赋初值,就进行了*p操作,这在C语言编程中绝对要禁止的。
void_c 发表于 2009-10-3 08:40
学习了,谢谢。
catwill (2009-10-05 08:29:00)
楼主运气不错!
本来编译器可以不理你,高高兴兴的执行下去的……^_^
WANJIAN (2009-10-05 12:44:09)
很明显。。。。。
trinove (2009-10-05 22:08:36)
幸亏提醒了,不然楼主以后会很郁闷找不到问题出在哪里的