对于这个作业,我应该在Visual Studios中使用调试器,我有点理解如何使用它,但我无法完全弄明白。对于代码的第一部分,它要求a,b和c的所有值。我把我的调试器在它开始之前开始,然后在它结束之后立即开始。我通过使用F10键来运行它。我经历过一次,得到a = 6,b = 3,c = 6。然后,一旦我再次通过它,我得到不同的值,但我想将这些值视为列表。那可能吗?
//THIS IS THE CODE.
#include<stdio.h>
void func1(int a, int b, int c)
{
//Track all values of a, b, and c
printf("%d %d %d\n",a,b,c);
a = b + b;
printf("%d %d %d\n",a,b,c);
}
int func2(int x)
{
//Track all values of x
printf("%d\n",x);
for (x = 7; x < 12; x += 1)
{
printf("%d", x + 10);
}
return(x);
}
int func3(int x)
{
x = x + 51;
return(x);
}
int main()
{
int a,b,c;
//Track each array index value
int arr[5];
a = 7;
b = 3;
c = 3;
func1(5, 3, 6);
func2(c);
b = func2(c);
for (c = 0; c < 5; c += 1)
{
arr[c] = c + 2;
}
for (b = 22; b > 7; b += -1)
{
arr[b + func3(a)] = a + b + c;
printf("%d\n", b);
}
for (b = 0; b < 5; b += 1)
{
printf("%d\n", arr[b]);
}
return(0);
}
答案 0 :(得分:1)
arr[b + func3(a)]
在调试之前,进一步修复代码中的错误。
这里有数组越界访问,这将导致未定义的行为。
您正尝试访问arr[22 + x]
,其中数组的大小为5。