指向具有二维数组的struct的指针

时间:2013-01-11 15:09:06

标签: string pointers structure

我有这个结构:

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

};

我这样做:

struct dict字典;  struct dict * p_diction =& dictionary;  但是当我尝试用指针指向scanf时我得到一个错误,自然我就被定义了所有。

的scanf( “%10S”,p_diction->(*(dict0 + i))的[0]);

'''之前的预期标识符('标记

并且我不想使用&字典扫描,因为除了scanf之外,其他情况也会发生这种情况。

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

1 个答案:

答案 0 :(得分:0)

你想要的是

p_diction->dict0[i]

*(p_diction->dict0 + i)

你需要为char转换传递一个指向%s的指针,这样char[MAX_WORD_LEN+1]就可以了(它将被转换为指向第一个char的指针它)。

p_diction->dict0

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

&p_diction->dict0[i][0]

在您尝试的两个解除引用的情况下,您将通过char,这会造成严重破坏。你只需要一个。