|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 一个神奇的程序,也许你看懂了什么,但也许你也忽略了什么。
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1538
人关注过本帖
标题:
一个神奇的程序,也许你看懂了什么,但也许你也忽略了什么。
取消只看楼主
加入收藏
荡气回肠
等 级:
论坛游民
帖 子:33
专家分:40
注 册:2012-5-6
结帖率:
66.67%
楼主
收藏
问题点数:0 回复次数:6
一个神奇的程序,也许你看懂了什么,但也许你也忽略了什么。
#include <stdio.h>
int main()
{
int i = 0;
int a[5];
for(i = 0; i <= 5; i++)
{
a[i] = -i;
printf("a[%d] = %d\n", i, a[i]);
}
getchar();
return 0;
}
[
本帖最后由 荡气回肠 于 2013-10-11 08:32 编辑
]
搜索更多相关主题的帖子:
include
2013-10-09 22:06
举报帖子
使用道具
赠送鲜花
荡气回肠
等 级:
论坛游民
帖 子:33
专家分:40
注 册:2012-5-6
第
2
楼
收藏
得分:0
回复 2楼 pauljames
嗯,是的。
当循环变量i的值为5的时候将访问a[5],这个时候产生了一个数组越界的错误,并且程序产生了死循环。
在C中a[5]其实等价于*(a+5),也就是说当i的值为5的时候,将对a+5这个内存空间进行赋值。在该程序中a+5这个内存空间正好就是i的地址,也就是说当i的值为5的时候,在for循环中的赋值语句其实等价于i=-i,即将i赋值为-5,因此i<=5永远无法满足。
2013-10-09 22:37
举报帖子
使用道具
赠送鲜花
荡气回肠
等 级:
论坛游民
帖 子:33
专家分:40
注 册:2012-5-6
第
3
楼
收藏
得分:0
回复 3楼 没事学学
呵呵,应该没有那么严重吧。程序应该会一会儿快,一会儿慢。不稳定,最后直接死掉。
2013-10-09 22:39
举报帖子
使用道具
赠送鲜花
荡气回肠
等 级:
论坛游民
帖 子:33
专家分:40
注 册:2012-5-6
第
4
楼
收藏
得分:0
回复 7楼 踩不扁小强
给你看看这个,你就应该明白了。
在C语言中,每次函数调用都会使用掉一部分的栈空间,且函数返回后会自动释放掉这部分栈空间。那这些栈空间拿来干什么用呢?局部变量!C语言中的局部变量是在栈空间自动分配的,也就是说函数调用的时候所使用的栈空间就是用于创建局部变量的。
图片附件: 游客没有浏览图片的权限,请
登录
或
注册
运行结果可以知道:局部变量i确实同数组中的第5个元素a[5]在栈上分配空间,因此a[5]就是i。
2013-10-09 23:17
举报帖子
使用道具
赠送鲜花
荡气回肠
等 级:
论坛游民
帖 子:33
专家分:40
注 册:2012-5-6
第
5
楼
收藏
得分:0
回复 10楼 embed_xuel
难怪论坛这么死气沉沉的。。。。。。
2013-10-10 09:16
举报帖子
使用道具
赠送鲜花
荡气回肠
等 级:
论坛游民
帖 子:33
专家分:40
注 册:2012-5-6
第
6
楼
收藏
得分:0
回复 11楼 tlliqi
何为论坛?是不是觉得我明知道答案还贴出来,有点儿装的感觉。如果你们要这么想的话,我只能说在这儿缺乏一种学习的氛围。问题的出来是供大家讨论的,希望大家分享自己的见解。分数在某种程度上是为了提起大家的兴趣,对回答者的肯定,但不是最终的目的。分数看得过重,或许也是在拿分数炫耀。
2013-10-10 09:28
举报帖子
使用道具
赠送鲜花
荡气回肠
等 级:
论坛游民
帖 子:33
专家分:40
注 册:2012-5-6
第
7
楼
收藏
得分:0
回复 19楼 cwjsjesse
下面是等价关系:
a[5]<==>*(a + 5);
&a[5]<==>a + 5;
a + 5
是一种指针的运算:
p + n; <==> (unsigned int)p + n*sizeof(*p);
当指针p指向一个同类型的数组的元素时:p+1将指向
当前元素的下一个元素;p-1将指向当前元素的上一
个元素。
2013-10-11 08:54
举报帖子
使用道具
赠送鲜花
7
1/1页
1
快速回复:
一个神奇的程序,也许你看懂了什么,但也许你也忽略了什么。
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.040310 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved