问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于C语言数组越界的问题

发布网友 发布时间:2022-04-27 08:15

我来回答

8个回答

热心网友 时间:2022-04-27 09:45

for(int i=0;i<10;i++)
{ a[i] = i;}

程序一般是这样写,0刚好是数组第一个元素,10刚好是数组的最后一个元素加1。
数组的使用不能越界,定义多少用多少,定义了10,就只能用0~9。要是这样乱用的话,在堆栈中有新的数组分配使用时,会将你乱用的空间毁掉,你上面能成功时因为你使用的数组就得这个而已。

热心网友 时间:2022-04-27 11:03

这个是C的特点 自由 *少 编译器 不会对数组越界 给警告

得靠自己 仔细 定义了数组长度 N ,就该牢记 元素 下标是 0 到 N-1

给你介绍 一个 smart 点的方法

需要 为 N个的数组元素
则不定义长度为N的数组 ,而是定义 长度 为N + 1的数组
存放数据是 从 下标为1的元素开始 一直到下标N
下标为 0 的元素 不用来 存放 数组元素 ,而是用来存放 数组的元素个数 N(或者是最后一个元素的下标)追问多谢,这点我也知道,我只想弄明白 a[num] = num的原因

追答不要去想 没意义的问题 牛角尖
a[num] = num 这种越界代码写出来 运行 就弹对话框 0x ??? 内存 不能为write ,
你说有意思吗

热心网友 时间:2022-04-27 12:37

内存给num分配的存储位置紧跟数组a后面,在printf(“%d”, a【num】)时输出了数组a后面地址上的内容,即num的值,该值只读不可修改追问的确,根据不同的环境,改值是会随机发生变化,和我猜想的一样,越界只是访问到了a[num]的这个num所在的位置,才造成的这一结果;谢谢大伙了,但是只能有一个最佳;

追答我也用gcc编译器,打印的a【num】是num的值,这一假设的确成立
只是不知道是否可以当成一个惯例来使用

热心网友 时间:2022-04-27 14:29

越界数组的值是不确定的,WIN7下 VS2008编译运行以下代码
#include<stdio.h>
int a[10];
void main()
{
printf("%d\n",a[10]);
printf("%d\n",a[100]);
printf("%d\n",a[1000]);
printf("%d\n",a[10000]);
}
前面3行输出 0
第4行就出错强行关闭程序了

热心网友 时间:2022-04-27 16:37

这个不行吧,就像上面两位说的不同编译器初始化的值可能不同,即使是这样初始化的,有可能其它数组或变量定义在这块地方,使得数值就会出现错误。你可以考虑用for循环定义好后使用,如果数组大小不明,应使用动态maloc,caloc定义。

热心网友 时间:2022-04-27 19:01

会很危险,会不会是巧合呢,在Debug下,编译器可能做了些什么,试试Release下呢,毕竟项目都是通过Release发布的追问GCC编译的

热心网友 时间:2022-04-27 21:43

不能的,越界之后到了其他变量的内存空间 (不一定是本程序) 值是不确定的

热心网友 时间:2022-04-28 00:41

1 你的结论你只在一台电脑上的特定环境下测试过,不表示重新测试,或者换台电脑测试还有这个结论。
2 正确的结论是,数组元素(包括超界的元素),没有初始化前,其值是不确定的。请楼主换时间,换电脑测试下。追问多个同事帮我测试结果都是一样的

追答#define num 10
int b[1000]; //------->在给a分配存储单元前,先分配给b,数组a的元素值可能发生变化。
int a[num];

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
福如东海终身寿险(A款)(分红型)能退多少钱 我买的新华人寿保险福如东海A型,但是想退了。 杭州樱花日语学校的学习效果如何得到管理与跟踪? 枣子不能与什么一起吃 枣子和什么食物相克 枣子和什么相克 枣子跟什么不能一起吃 电风扇带不动风叶拿掉风叶能转是怎么回事 嵌入式学习首先要学什么基础 学习嵌入式的基础是什么 问一下此诗的出处 我本楚狂人,凤歌笑孔丘。手持绿玉杖,朝别黄鹤楼。五岳寻仙不辞远,一生好入名山游。 谜语:鸟飞不到吴天长(打一字) 登高壮观天地间 大江茫茫去不还 翻译 李白《庐山遥寄卢侍御虚舟》 翠影红霞映朝日 鸟飞不到吴天长是指什么生肖呀 支付宝卡通账户明细查询中充值退回是怎么一回事?? 支付宝账户怎么退回未使用完的充值金额? 关于支付宝的充值退回 变压器运行出现声音异常有哪些原因 为什么一些变压器会发出嗡嗡的响声? 变压器噪声与什么有关? 公积金贷款利率 二套 被好友删除了,对方换并升及了,还能加上对方吗? 对方撞车肇事逃逸会被怎么处罚 杭州市下沙梦琴湾到物美超市怎么乘车 我在网上买了4G版的航睿日产轩逸导航,打开地图一看搜星情况,有GPS&#47;格洛纳斯&#47;北斗卫星,北斗和格 杭州下沙物美超市那边早上七八点的时候打的方便吗? 喝酒开车撞车逃逸怎么处理 西门子人机界面6AV6 545-0CC10-0AX0怎么校准中心 杭州下沙物美超市最近的地铁口叫什么名字?急!! 电容补偿柜n线接零线吗 电容补偿有两台分别是,主柜和辅柜,而且每台柜子都有补偿控制器,这种情况下取样电流该如何接线 成都泰迪熊博物馆国庆门票是多少啊? 温江泰迪熊博物馆在哪?门票多少钱? 2013成都泰迪熊博物馆门票有套票?多少钱? 成都泰迪熊博物馆 门票多少钱 韩国泰迪熊博物馆买泰迪熊多少钱? 成都温江泰迪熊博物馆门票 是不是有屈臣氏的会员卡可以打7.5折啊 所有的票都打7.5折吗 韩国泰迪熊博物馆李敏镐公仔多少钱 韩国首尔塔路线 今天女生微信说没吃饭 她说随便吃点 我说愁死了怎么这么不会照顾自己啊 然后她发了个下图表情是 济州岛的那个泰迪熊博物馆里的泰迪熊玩具价格贵吗? 温江金马的泰迪熊博物馆在哪?去要门票吗? 泰迪熊博物馆怎么样 心里很不舒服怎麼办 成都泰迪熊博物馆好玩吗? 可以稍微具体点、比如互动方面的、电影免费的还是还需要再交钱呢?? 韩国济州岛有两个泰迪熊博物馆,两个有什么不同之处吗 韩国泰迪熊博物馆泰迪熊如何网上购买 怎么恢复快手的聊天记录? 温江泰迪熊博物馆在哪?大学城怎么过去?