首页 > 解决方案 > 运行时检查失败 #2 - 变量“arr”周围的堆栈已损坏。发生了

问题描述

我对编码很陌生,所以我不确定为什么我在视觉工作室上遇到这个错误。调整数组功能在底部

int main() 
{

    int arr[7] = { 75,23,58,75,31,46,75 };

    unsigned int i = 0;

    printf("Unadjusted Array\n ");
    for (i = 0; i < 7; i++)
    {
        printf("%d\t", arr[i]);
    }
    printf("\n");

    printf("Adjusted Array\n");
    AdjustArray(arr, 7);
    for (i = 0; i < 7; i++)
        {
            printf("%d\t", arr[i]);
        }
    return 0;
}
 void AdjustArray(int arr[], unsigned int size)
{
    for (unsigned int i = 0; i < size ;i++)
    {
        arr[i]= 0;
        i++;
        arr[i] *= -1;
    }

}

`

标签: c

解决方案


在函数中,您在循环内AdjustArray递增。i

for (unsigned int i = 0; i < size ;i++)
{
    arr[i]= 0;
    i++;
    arr[i] *= -1;
}

在最后一个循环中,i==6if 将通过条件i<size,但该行i++会将值i设为 7。这超出了数组大小,并给出了错误。


推荐阅读