|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 二维数组可以这样定义竟没错误 是VC的BUG吗?
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1683
人关注过本帖
标题:
二维数组可以这样定义竟没错误 是VC的BUG吗?
只看楼主
加入收藏
shenhua2050
等 级:
论坛游民
帖 子:39
专家分:14
注 册:2010-11-23
结帖率:
66.67%
楼主
收藏
已结贴
√
问题点数:30 回复次数:11
二维数组可以这样定义竟没错误 是VC的BUG吗?
#include<stdio.h>
main()
{
int a[][3]={0,1,2,3,4,5,6,7,8,9,10,11,12};
printf("%d",a[4][0]);
}
我的数组a本来想是4行3列的,最后无意间多打了一个元素,编译器没有报错,当我输出a[4][0]的时候竟然可以输出12!
兄弟们一起讨论一下,这是什么原因?(a[4][1]输出0,a[4][2]输出也是0。)
搜索更多相关主题的帖子:
BUG
定义
2010-11-26 11:16
举报帖子
使用道具
赠送鲜花
ww稻草人
来 自:陕西西安
等 级:
职业侠客
帖 子:57
专家分:309
注 册:2010-5-11
第
2
楼
收藏
得分:6
那是因为你定义数组的时候没有定义行数,只定义了列数,那样定义相当于给数组定义了15个元素,从12开始后面的值你没有给出,他就默认为0了,不信你输出a[4][1],a[4][2]看是不是0
[
本帖最后由 ww稻草人 于 2010-11-26 11:23 编辑
]
我的博客 http://blog..cn/daocaoren020
2010-11-26 11:21
举报帖子
使用道具
赠送鲜花
时之鬼爵
来 自:广东
等 级:
新手上路
帖 子:2
专家分:6
注 册:2010-11-26
第
3
楼
收藏
得分:6
此数组行数定义被省略,初始化数据共13个,列数值为3,即行数为4+1=5行.
a[0][0]=0,a[1][0]=3,a[2][0]=6,a[3][0]=9,a[4][0]=12,就这样。
2010-11-26 11:26
举报帖子
使用道具
赠送鲜花
xiaomarn
等 级:
小飞侠
威 望:
5
帖 子:348
专家分:2026
注 册:2009-3-18
第
4
楼
收藏
得分:6
数组越界,C是不做这些安全检查的,对数组元素寻址也是通过指针(数组名被解析成一个指针)加偏移(下标*元素大小)
实现的,所以,你定义一个数组,C就跟你分配多大空间,输入多了它就存分配空间的后面
恩,不过说回来,好像你定义的数组没有越界!
由于第一维大小没定义([]),所以这一维是编译器计算的,你定义了13个元素,而第二维为3,,13/3>3,要4*3才能容下
即你定义的数组为a[4][3],而不是a[3][3];
2010-11-26 11:31
举报帖子
使用道具
赠送鲜花
shenhua2050
等 级:
论坛游民
帖 子:39
专家分:14
注 册:2010-11-23
第
5
楼
收藏
得分:0
回复 3楼 时之鬼爵
我刚试了一下,a[3][3]输出是12
a[3][4]输出0
a[3][5]输出0
a[3][6]输出是随机值,好像数组列数大于3列了,呵呵 这个怎么解释的?
2010-11-26 15:11
举报帖子
使用道具
赠送鲜花
shenhua2050
等 级:
论坛游民
帖 子:39
专家分:14
注 册:2010-11-23
第
6
楼
收藏
得分:0
回复 2楼 ww稻草人
我刚试了一下,a[3][3]输出是12
a[3][4]输出0
a[3][5]输出0
a[3][6]输出是随机值,好像数组列数大于3列了,呵呵 这个怎么解释的?
2010-11-26 15:11
举报帖子
使用道具
赠送鲜花
shenhua2050
等 级:
论坛游民
帖 子:39
专家分:14
注 册:2010-11-23
第
7
楼
收藏
得分:0
回复 4楼 xiaomarn
我刚试了一下,a[3][3]输出是12
a[3][4]输出0
a[3][5]输出0
a[3][6]输出是随机值,好像数组列数大于3列了,呵呵 这个怎么解释的?
2010-11-26 15:12
举报帖子
使用道具
赠送鲜花
shenhua2050
等 级:
论坛游民
帖 子:39
专家分:14
注 册:2010-11-23
第
8
楼
收藏
得分:0
回复 5楼 xugaige
我刚试了一下,a[3][3]输出是12
a[3][4]输出0
a[3][5]输出0
a[3][6]输出是随机值,好像数组列数大于3列了,呵呵 这个怎么解释的?
2010-11-26 15:12
举报帖子
使用道具
赠送鲜花
时之鬼爵
来 自:广东
等 级:
新手上路
帖 子:2
专家分:6
注 册:2010-11-26
第
9
楼
收藏
得分:0
回复 7楼 shenhua2050
a[3][3],列数最多取2,取3就越界了=a[4][0]了...
2010-11-26 16:01
举报帖子
使用道具
赠送鲜花
shenhua2050
等 级:
论坛游民
帖 子:39
专家分:14
注 册:2010-11-23
第
10
楼
收藏
得分:0
回复 10楼 时之鬼爵
终于明白了,谢谢了!!
2010-11-26 16:50
举报帖子
使用道具
赠送鲜花
12
1/2页
1
2
快速回复:
二维数组可以这样定义竟没错误 是VC的BUG吗?
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.036564 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved