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]