String 指向具有二维数组的结构的指针

String 指向具有二维数组的结构的指针,string,pointers,structure,String,Pointers,Structure,我有这样的结构: struct dict{ int len; char (*dict0)[MAX_WORD_LEN+1]; char (*dict1)[MAX_WORD_LEN+1]; }) 我这样做: 结构词典; 结构dict*p_diction=&dictionary; 但当我试图用指针扫描到指针时,我得到了一个错误,很自然地,我被定义了,所有的东西都被定义了 scanf(“%10s”,用词->(*(dict0+i))[0]) “(”标记之前应为标识符” 不,我不想使用&dictionar

我有这样的结构:

struct dict{
int len;
char (*dict0)[MAX_WORD_LEN+1];
char (*dict1)[MAX_WORD_LEN+1];
})

我这样做:

结构词典; 结构dict*p_diction=&dictionary; 但当我试图用指针扫描到指针时,我得到了一个错误,很自然地,我被定义了,所有的东西都被定义了

scanf(“%10s”,用词->(*(dict0+i))[0])

“(”标记之前应为标识符”

不,我不想使用&dictionary扫描,因为除了scanf之外,在其他情况下也会发生这种情况

编写命令的正确形式是什么?

您需要的是

p_diction->dict0[i]

您需要为
%s
转换传递一个指向
char
的指针,这样
char[MAX\u WORD\u LEN+1]
就可以了(它将被转换为指向其中第一个
char
的指针)

为您提供指向
字符[MAX\u WORD\u LEN+1]的指针
,并且您需要这些数组中的
i
-th,因此必须将此指针增加
i
。然后要获得正确类型的指针,必须取消引用以获得数组。然后,您可以使用自动数组到指针转换,或者显式传递数组中第一个
字符的地址

&p_diction->dict0[i][0]
使用您尝试的两次取消引用,您将传递一个
char
,这将造成严重破坏。您只需要一个

p_diction->dict0
&p_diction->dict0[i][0]