在C中的for循环中从2d数组输出值
我试图从Geeksforgeks解决这个问题: 我试图从2d数组中输出值,方法是首先收集用户的所有输入,然后输出值,但我得到的是随机整数。这些值在for循环之外显示得很好,这是我不理解的。我用来旋转值的算法按照我希望的方式工作 这是我的密码:在C中的for循环中从2d数组输出值,c,for-loop,multidimensional-array,C,For Loop,Multidimensional Array,我试图从Geeksforgeks解决这个问题: 我试图从2d数组中输出值,方法是首先收集用户的所有输入,然后输出值,但我得到的是随机整数。这些值在for循环之外显示得很好,这是我不理解的。我用来旋转值的算法按照我希望的方式工作 这是我的密码: int * rotate_array(int *array, int max_size, int rotate_by_D); int main() { //First accept and store all inputs int T,
int * rotate_array(int *array, int max_size, int rotate_by_D);
int main()
{
//First accept and store all inputs
int T, N, D;
scanf("%d", &T);
int arr_len[T];
int *results[T];
for (int i = 0; i < T; i++)
{
scanf("%d %d", &N, &D);
int arr[N];
arr_len[i] = N;
//store each length of the array
for (int j = 0; j < N; j++)
{
int user_input;
scanf("%d", &user_input);
arr[j] = user_input;
}
results[i] = rotate_array(arr, N, D);
}
//I can get the value I anticipate here
printf("%d\n", results[0][0]);
//the code below is where i am trying to output the new values to the users
//But I see random numbers instead
for (int di = 0; di < T; di++)
{
for (int dj = 0; dj < arr_len[di]; dj++)
{
printf("%d ", results[di][dj]);
}
printf("\n");
}
return 0;
}
提前感谢:)紧接着
结果[i]=旋转数组(arr,N,D)代码>,arr
消失,因此结果[i]
不再有效
{
...
int arr[N];
...
results[i] = rotate_array(arr, N, D);
... // arr[] is no longer valid at the close of this block.
// Since rotate_array() returns `arr`, results[i] like-wise becomes invalid.
}
或者,分配数据
// int arr[N];
int *arr = malloc(sizeof *arr * N);
...
results[i] = rotate_array(arr, N, D);
然后释放它
for (int dj = 0; dj < arr_len[di]; dj++) {
printf("%d ", results[di][dj]);
}
printf("\n");
free(results[di]); // add
for(intdj=0;dj
详细信息:int*结果[T]代码>不是二维数组<代码>结果
是指针数组
“指针不是数组。数组不是指针。”
// int arr[N];
int *arr = malloc(sizeof *arr * N);
...
results[i] = rotate_array(arr, N, D);
for (int dj = 0; dj < arr_len[di]; dj++) {
printf("%d ", results[di][dj]);
}
printf("\n");
free(results[di]); // add