程序只能运行一次,求原因

printf_love_62 2011-11-17 09:14:54

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int c[6],i;
int *p;

for(i=0;i<=6;i++)
scanf("%d",&c[i]);
for(p=c+6;p>=c;p--)
printf("%d ",*p);

system("pause");
}[


运行一次有效(输入一串数,倒叙输出)。但是随后就会弹出“Run-Time Check Failure #2 - Stack around the variable 'c' was corrupted.”
...全文
332 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
yingzijuntuan 2011-11-18
  • 打赏
  • 举报
回复
打个顺风车呀,就是
#include<stdio.h>
#include<stdlib.h>
void main()
{
int c[6],i;
int *p;
for(i=0;i<6;i++)
scanf("%d",&c[i]);
for(p=c+6;p>=c;p--)//是p=c+6而不是c+5的时候,输入1 2 3 4 5 6的时候
printf("%d ",*p); //输出的是1245064 6 5 4 3 2 1,第一个1245064是怎
printf("\n"); //么回事,求高手解释呀。。。。。
}
shuoshuo_mt 2011-11-18
  • 打赏
  • 举报
回复
啊,悲催的English...
天机阁主 2011-11-18
  • 打赏
  • 举报
回复
两个for语句都越界了
gaochizhen33 2011-11-18
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yingzijuntuan 的回复:]
打个顺风车呀,就是
#include<stdio.h>
#include<stdlib.h>
void main()
{
int c[6],i;
int *p;
for(i=0;i<6;i++)
scanf("%d",&c[i]);
for(p=c+6;p>=c;p--)//是p=c+6而不是c+5的时候,输入1 2 3 4 5 6的时候
p……
[/Quote]
同样是越界问题啊。。c是c[0]的地址,c+6的话这不还是c[6]的地址么。。你输入的时候只存储到了c[5],输出的话已经地址越界了,但是刚内存没有被系统使用,刚好存储的是1245064,就打印出来了。
橡皮擦 2011-11-17
  • 打赏
  • 举报
回复
不认识的单词就有道
vilnies 2011-11-17
  • 打赏
  • 举报
回复
标题.....很多程序员都想要这功能
AnYidan 2011-11-17
  • 打赏
  • 举报
回复
Stack around the variable 'c' was corrupted.”
提示的多清楚, 栈上变量 c

诶呦 2011-11-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 naoshi 的回复:]

C/C++ code

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int c[6],i;
int *p;

for(i=0;i<6;i++)
scanf("%d",&c[i]);
for(p=c+5;p>=c;p--)
printf("%d ",*p);
……
[/Quote]
++
最后添加个返回值 return 0;
SVKING 2011-11-17
  • 打赏
  • 举报
回复
越界,不解释
naoshi 2011-11-17
  • 打赏
  • 举报
回复

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int c[6],i;
int *p;

for(i=0;i<6;i++)
scanf("%d",&c[i]);
for(p=c+5;p>=c;p--)
printf("%d ",*p);

system("pause");
}

原因 int c[6]
w120870593 2011-11-17
  • 打赏
  • 举报
回复
你定义六个数,结果输入了七个数,数组越界了
int c[7];就对了
hxnhlx 2011-11-17
  • 打赏
  • 举报
回复
越界了嘛!!
for(i=0;i<=6;i++)
你这个循环会执行7次,也就是你会给 c[6]赋值,而这个就是越界的。
haung01 2011-11-17
  • 打赏
  • 举报
回复
原来的程序不能运行。把第一个for循环i<=6里的“=”去掉。程序会运行……
printf_love_62 2011-11-17
  • 打赏
  • 举报
回复
自己改好了 是越界了好像 自己回答有没有分数啊 ?

不过还是望高手给解说一下,更安心啊

70,035

社区成员

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

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