Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中的for循环中从2d数组输出值_C_For Loop_Multidimensional Array - Fatal编程技术网

在C中的for循环中从2d数组输出值

在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,

我试图从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, 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