【发布时间】:2014-07-12 21:25:05
【问题描述】:
我正在尝试编写一个程序,将数组的反转放入另一个数组。所以,我做了一个函数来做相反的事情。并传递要按值反转的数组。并且该数组用于通过引用存储反向。但是当我运行程序时它崩溃了。
#include <stdio.h>
#include <conio.h>
#define size 50
void revarr (int num1[], int *num2)
{
int i;
for (i = 0; i<size; i++)
{
num2[3-1-i] = num1[i];
}
}
int main()
{
int num[] = {1,8,1};
int reverse[3],x;
revarr(num,reverse);
for (x = 0; x<3; ++x)
printf("%d ", reverse[x]);
getch();
return 0;
}
我该如何解决这个问题?
【问题讨论】:
-
您将
i增加到49,此时num2[3-2-i]将是num2[-47]-> 不允许负偏移 -
num2[3-1-i] 怎么回事?
-
您可以通过在代码行之间放置一些打印语句来解决此问题,这样您就可以找出崩溃的位置。然后问自己“为什么那行代码会崩溃”,如果你不能解决这个问题,那么你可以来 SO 寻求答案。先做一些调查。