论坛: 编程破解 标题: 结构体指针的一点困惑 复制本贴地址    
作者: ljsh012 [ljsh012]    论坛用户   登录
p为结构体指针
a[3]为结构体数组
以下程序
p=a;
for(i=0;i<3;i++,p++)
printf("%s--%d",p->name,p->age);
执行时没问题,改为下面的程序后运行不抱错,但结果错误了
p=a;
for(i=0;i<3;i++)
printf("%s--%d",(p++)->name,(p++)->age);
看不出是哪里错了。请知者赐教。谢谢。

地主 发表时间: 04-08-27 20:23

回复: windflower [windflower]   论坛用户   登录
printf("%s--%d",(p++)->name,(p++)->age);
上一句p++使用了两次,自加了两次,你难道没看出吗?
printf("%s--%d",(p++)->name,p->age);
这样应该没错吧,你试试。


B1层 发表时间: 04-08-27 21:18

回复: ljsh012 [ljsh012]   论坛用户   登录
e,你也提醒我就恍然大悟了。忘了程序的执行次序了。我想当然把两者视为并列。这样后 应该对了。谢谢。

B2层 发表时间: 04-08-28 12:10

回复: 286 [unique]   版主   登录
本人强烈建议大写以后这样写:
p=a;
for(i=0;i<3;i++)
{
printf("%s--%d",p->name,p->age);
p++;
}
虽然多了一行,但可读性,产生错误的概率小多了。

B3层 发表时间: 04-08-30 10:03

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号