C语言啊 奇怪了!

来源:百度知道 编辑:UC知道 时间:2024/06/16 15:15:55
1。#include "stdio.h"
main()
{
int i;
char *p="abcdefg";
for(i=0;i<3;++p)
{
printf("%s\n",p);
i++;
}
getch();
}
2。#include "stdio.h"
main()
{
int i;
char *p="abcdefg";
for(i=0;i<3;p++)
{
printf("%s\n",p);
i++;
}
getch();
}
2种写法难道没有任何区别吗? 就是P++与++p
如果没区别 答案应该都是
bcdefg
cdefg
defg
啊 即运行完p++或++p的语句之后在运行下一步 所以答案一样
但为什么上机实验
答案是
abcdefg
bcdefg
cdefg
既然第1种写法的答案是上述的 那么第2种就应该和第1种答案不一样啊
奇怪了!!!!

怎么会不一样,一楼的,虽然你说的对,但在此程序中++p和p++都是单独操作的,不存在执行问题!
两个程序的运行过程均为:
char *p="abcdefg";
i=0;
printf("abcdefg");(此时的p)
i=1;
p++或++p(均为p=p+1,指针向后指,舍去a)
printf("bcdefg");(此时的p)
i=2;
p++或++p(均为p=p+1,指针向后指,舍去b)
printf("cdefg");(此时的p)
i=3;
i<3=0->结束

当然有区别了,P++是先执行P,然后在把P+上1供下次执行使用.++P是先把P+上1,再执行P

for语句展开看
for(i=0;i<3;++p)
{...}
相当于
i=0;
while(i<3)
{
...
++p;
}