Arrays 指向字符串数组的指针数组,只能访问数组的第一个元素

Arrays 指向字符串数组的指针数组,只能访问数组的第一个元素,arrays,c,pointers,c-strings,char-pointer,Arrays,C,Pointers,C Strings,Char Pointer,嗨,我正在尝试使用指针数组访问存储在2个不同数组中的字符串,代码如下: typedef char (*p)[2][20]; //pointer to array of strings ///create dictionaries char names[2][20] = {"jack","john"}; char items[2][20] = {"car"}; p pointer[2]= {

嗨,我正在尝试使用指针数组访问存储在2个不同数组中的字符串,代码如下:


typedef char (*p)[2][20]; //pointer to array of strings


    ///create dictionaries
    char names[2][20] = {"jack","john"};
    char items[2][20] = {"car"};
    
    p pointer[2]= {&names,&items};
    
    print(pointer[x][y])


用x=1y=0替换x和y打印汽车,而x=0y=0打印杰克,但我不知道如何打印约翰。使用x=0 y=1打印(@x,而x=1 y=1也打印jack,x=1 y=2也打印(@x)。我想知道如何访问john?

指针[x]是指向数组的指针

您需要取消对它的引用以获得字符串数组,然后索引到该数组中

printf("%s\n", (*pointer[x])[y]);

欢迎来到SO。请阅读,并在您的帖子中加入一个。因为这些都是字符串,所以使用
char*
数组而不是2D数组可能更方便。