【问题标题】:Pointer to struct with a two dimensional array指向具有二维数组的结构的指针
【发布时间】:2013-01-11 15:09:06
【问题描述】:

我有这个结构:

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

};

我这样做:

结构字典; 结构字典 *p_diction=&dictionary; 但是当我尝试使用指向指针的指针进行扫描时,我得到一个错误,自然我定义了一切。

scanf("%10s",p_diction->(*(dict0+i))[0]);

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

不,我不想使用 &dictionary 进行 scanf,因为除了 scanf 之外的其他实例也会发生这种情况。

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

【问题讨论】:

    标签: string pointers structure


    【解决方案1】:

    你想要的是

    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-th,因此您必须将此指针递增i。然后要获得正确类型的指针,您必须取消引用才能获得数组。然后你可以使用自动数组到指针的转换,或者显式传递数组中第一个char的地址

    &p_diction->dict0[i][0]
    

    通过您尝试的两次取消引用,您将通过char,这将造成严重破坏。你只需要一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-26
      相关资源
      最近更新 更多