标题:简单的数组问题,不知道为什么编译不对
只看楼主
啥都不懂的人
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-9-21
结帖率:0
已结贴  问题点数:20 回复次数:7 
简单的数组问题,不知道为什么编译不对
简单的冒泡法排序,不知道为啥在vs2017上编译出错 显示 Run-Time Check Failure #2 - Stack around the variable a was corrupted

多谢指教!


#include<stdio.h>

int main()
{
    int i,j,t=0;
    int a[] = { 1,3,6,2,5 };
    for (i = 1;i <= 4;i++) {
        for (j = 1;j <= 5 - i;j++)
            if (a[j] > a[j+1]) {
                t = a[j+1];
                a[j+1] = a[j];
                a[j] = t;
            }
    }
    printf("\n");
    for (i = 0;i < 5;i++) {
        printf("%d", a[i]);
    }
    return 0;
}
搜索更多相关主题的帖子: 数组 编译 int for i++ 
2017-09-21 16:10
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:7 
是否有越界
2017-09-21 16:31
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
for (i = 1; i <= 4; i++)
{
    for (j = 1; j <= 5 - i; j++)
        if (a[j] > a[j+1])
i=1时,j最大=4,a[j+1]的j+1=5,越界了?
2017-09-21 16:39
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:7 
回复 2楼 吹水佬
Stack around the variable a was corrupted
这种错误肯定是溢出了
当 i==1, j==4 时
if (a[j] > a[j+1]) 中 a[j+1] 溢出了
2017-09-21 16:41
啥都不懂的人
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-9-21
得分:0 
回复 2楼 吹水佬
大佬能否帮忙细讲一下啥是越界...感觉不是很懂。因为我先定义数组再定义i这些变量,编译还是出错。
2017-09-21 16:43
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用啥都不懂的人在2017-9-21 16:43:44的发言:

大佬能否帮忙细讲一下啥是越界...感觉不是很懂。因为我先定义数组再定义i这些变量,编译还是出错。

啥是越界
int a[5];
a[4] = 1; 这就不越界
a[5] = 1; 这就越界了
2017-09-21 16:47
chenghuahua
Rank: 2
等 级:论坛游民
威 望:1
帖 子:5
专家分:27
注 册:2017-9-21
得分:7 
溢出了
2017-09-21 23:44
chenghuahua
Rank: 2
等 级:论坛游民
威 望:1
帖 子:5
专家分:27
注 册:2017-9-21
得分:0 
还有就是i j应该从0开始
2017-09-22 00:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480853-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.116063 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved