gpt4 book ai didi

c - 数组指针错误?

转载 作者:行者123 更新时间:2023-11-30 19:37:13 25 4
gpt4 key购买 nike

我有一个带有两个参数的函数;

  1. N 是位置数或数组大小
  2. nr_vals 我从中获得排列的数字范围;如果nr_vals为3,则打印0~3的排列。

外部函数仅打印基本情况 {0 0 0 0},然后内部函数 ( extra_helper ) 递归执行其余部分。

我在 temp[N] = i 行收到 EXC_BAD_ACCESS 错误。数组指针有错误吗?

我的代码;

外部函数;参数为 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]);
}

最佳答案

你的程序有很多问题:

  1. int array[N];,使用N来声明哪个不是const来声明数组,不推荐,可以这样声明const整数N=10; int array[N];int *array = (int*)malloc(N*sizeof(int))
  2. 当将数组传递给函数时,它实际上传递的是数组的地址,而你的array[N]是局部变量,当你将它传递给extra_help时, array[N] 的内存已经消失,它实际上传递了一个无效的地址
  3. 当声明 temp[N] 时,temp 有 N 个索引从 0 到 N-1 的元素,您不能使用 temp[N],因为 N 索引不存在,尽管编译器并不总是生成警告或错误。

关于c - 数组指针错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40145052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com