vs提示堆栈被损坏,但是能够运行出来结果?

各位帮忙看下!!
代码如下:

#define _CRT_SECURE_NO_WARNINGS 1 
#include <stdio.h>

int main() {
    //冒泡排序
    int a[] = { 0 };
    int b=0;    //这里的 b 是用来储存数组的大小
    printf("输入数字:\n");
    printf("输入  00  停止\n");
    for (int i = 0;; i++)
    {
        scanf("%d", &a[i]);
        if (a[i] == 00)
        {
            b = i;
            break;
        }
    }
    printf("  %d  个数的排序结果:\n",b);
    for (int i = 0; i < b; i++)        //因为输入了 b 个数,此处的  <b 刚好可以把最后输入的  控制 00  去掉
    {
        for (int j = i; j < b; j++)
        {
            if (a[i] < a[j])                  
            {
                int te = a[i];
                a[i] = a[j];
                a[j] = te;
                
            }
        }
    }
    for (int i = 0; i < b; i++)    //遍历
    {
        printf("%d  ", a[i]);
    }
}





img

int a[] = { 0 };不能这么写,你可以给一个比较大的值,比如int a[10000] = { 0 };

出现这种错误,你只需要设置一下数组a的长度即可
因为 int a[] = { 0 };这里没设置数组大小


int a[] = { 0 };

这里只分配了一个int,相当于数组长度只有1,后面的操作肯定超出了,栈肯定是被踩了。只是你这里面只有一个main函数,在main退出时才会发现问题,所以之前的运行结果没有问题