我有一个带两个参数的函数;
外部函数只打印基本案例{0 0 0 0},然后内部函数(extra_helper
)以递归方式完成剩下的工作。
我在第EXC_BAD_ACCESS
行收到temp[N] = i
错误。数组指针有错误吗?
我的代码;
外部功能;参数3,2。void perm_rec_1(int N, int nr_vals){
int array[N];
for(int i = 0; i<=nr_vals;i++)
{
array[i] = 0;
}
for (int i = 0; i <=nr_vals; i++)
{
printf("%d",array[i]);
}
printf("\n");
extra_help(N, nr_vals, array[N]);
}
内在功能;
void extra_help(int N, int nr_vals, int array[])
{
if (N < 0)
{
return;
}
int temp[N];
for (int i = 0; i<=nr_vals; i++)
{
temp[i] = &array[i];
}
for (int i = 1; i <= nr_vals;i++)
{
temp[N] = i;
for (int z = 0; z <=nr_vals; z++)
{
printf("%d",temp[z]);
}
printf("\n");
while(temp[N+1] != NULL)
{
int M = N+1;
for(int innerCounter = 1; innerCounter<=nr_vals; innerCounter++)
{
temp[M] = innerCounter;
for (int z = 0; z <=nr_vals; z++)
{
printf("%d",temp[z]);
}
}
temp[M] = 0;
}
}
extra_help(N-1, nr_vals, &array[N]);
}
答案 0 :(得分:0)
你的程序有很多问题:
int array[N];
,使用N
声明哪个不是const来声明数组,不推荐使用,您可以声明为const int N=10; int array[N];
或int *array = (int*)malloc(N*sizeof(int))
array[N]
是局部变量,当你将它传递给extra_help
时,array[N]
的内存已经消失了,它实际上传递了一个无效的地址temp[N]
时,temp有N个元素,索引从0到N-1,
你不能使用temp [N]因为N索引不存在,尽管编译器不会总是生成警告或错误。