运行时检查失败#2 - 围绕变量“选项卡”堆栈已损坏
问题描述:
我在C语言培训,我正在做一个程序,创建一个简单的数组和排序他。 下面的代码:运行时检查失败#2 - 围绕变量“选项卡”堆栈已损坏
MAIN.C:
#include <stdlib.h>
#include <stdio.h>
int main(int argc, int *argv[])
{
int tab[5]={2,5,3,9,4}, i=0, longueur=0;
/*for(i=0; i<5; i++)
{
tab[i] = i;
}*/
longueur = sizeof(tab)/sizeof(tab[0]);
trierTab(tab,longueur);
afficherTab(tab,longueur);
return 0;
Tableaux.c:
#include "tableaux.h"
//Sort the array
void trierTab(int tab[],int longueur)
{
int i=0, j=0,max=0,indiceMax=0,temp=0;
for(i=longueur-1; i>=1;i--)
{
for(j=0;j<=i;j++)
{
if(tab[j]>max)
{
max = tab[j];
indiceMax = j;
}
}
temp=tab[j];
tab[j]=max;
tab[indiceMax]=temp;
}
}
//Print the array
void afficherTab(int tab[], int longueur)
{
int i=0;
for(i=0;i<longueur;i++)
{
printf("| %d |",tab[i]);
}
}
我想,有一个出界的错误,但我可以”不知道她在哪里:s 有人可以帮我吗? ^^
答
当您从此退出for循环的第一次:
for(j=0;j<=i;j++)
{
if(tab[j]>max)
{
max = tab[j];
indiceMax = j;
}
}
的j
值是5
。
然后分配:
temp=tab[j];
所以你正在读出的tab
(temp=tab[5];
)
边界环路'用于之后的(j = 0;Ĵ 2014-11-05 11:16:36
Omfg,我很笨x) 谢谢你:) – DoT 2014-11-05 11:24:41