C语言遇到不明白的了,求大神解救

AXUBOD 2012-08-22 10:00:55
#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
int a[10];
int *p;
for(int i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
p=a;
for(;p<a+10;)
{
printf("%d",(*p)++);
}
return 0;
}

这段代码为什么会出现死循环啊
...全文
88 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
AXUBOD 2012-08-22
  • 打赏
  • 举报
回复
我已经明白了,谢谢楼上的
HAN-Kai 2012-08-22
  • 打赏
  • 举报
回复
p的值没有改变呀,(*p)++是数值的增加,而不是指针的指向移动。在循环结束一次之后p=a;把每循环改成for(p=a;p<a+10;p++)就可以了
yht8708 2012-08-22
  • 打赏
  • 举报
回复
printf("%d",*p(++));
cao_julians 2012-08-22
  • 打赏
  • 举报
回复
(*p)++是p指向的a[0]做++,循环是将a[0]输出后再加一,一直循环下去。
象1L那样改为*p++,输出p指向的(*p)后,再将p指向下一个数组元素(p++)。这里++仅作用于指针变量p
jiangshi061 2012-08-22
  • 打赏
  • 举报
回复
(*p)++ ,
p所指向的值变了,
但是 p 未变啊,
淡定的小Y 2012-08-22
  • 打赏
  • 举报
回复
a代表的是一个指针,指的是一片存储区域,将a的地址赋值给a但是并没有给p的结束条件,所以p只会沿着这个地址一直走下去的!
dhdahai 2012-08-22
  • 打赏
  • 举报
回复
for(;p<a+10;)
{
printf("%d",(*p)++);
}

此处(*p)++
p的值未变化
故p<a+10恒成立

(*p)++ ----> *p++

69,379

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧