如何在C中正确设置指向数组的指针数组?

Per*_*nCZ -2 c arrays

假设我已经定义了这3个数组:

int[][3] arr0 = { 
    {1,2,3}, 
    {4,5,6} 
};

int[][3] arr1 = { 
    {10,20,30}, 
    {40,50,60}, 
    {70,80,90} 
};
int[][3] arr2 = { 
    {100,200,300}, 
    {400,500,600}, 
    {700,800,900}, 
    {1000,1100,1200}
};
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个指向这些数组的指针数组,如:

// pseudo code example
arrays[] = {
    arr0, 
    arr1, 
    arr2
};
Run Code Online (Sandbox Code Playgroud)

因为我想以这种方式从变量"arrayN"的第j个子数组中获取第k个值:

// pseudo code example
int value = arrays[N][j][k];
Run Code Online (Sandbox Code Playgroud)

例如:N为2,j为1且k为0,目标数组为arr2,因此该值应为400.

如何在C中正确编写此代码?我尝试了很多方法而没有工作.

Mik*_*CAT 6

指向数组的指针将无法正常工作.

为了存档你想要的东西,我认为使用指针数组int[3]是好的.

#include <stdio.h>

int main(void) {
    int N = 2, j = 1, k = 0;
    int arr0[][3] = { {1,2,3}, {4,5,6} };
    int arr1[][3] = { {10,20,30}, {40,50,60}, {70,80,90} };
    int arr2[][3] = { {100,200,300}, {400,500,600}, {700,800,900}, {1000,1100,1200} };

    int (*arrays[])[3]={arr0,arr1,arr2};
    int value = arrays[N][j][k];

    printf("%d\n",value);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)