通过参照函数传递的问题

时间:2016-07-03 18:04:53

标签: c++ c pointers linked-list

我有链接列表和一些Typedef For It,我定义了Like This,

typedef struct listNode {
    char* val ;
    struct listNode *next;
};
typedef struct listNode LISTNODE;
typedef LISTNODE *LISTNODEPTR;

在我的主要内容中,我装了这个变量:

     LISTNODEPTR startptr[19][10];

这是标题中的My Cf函数:

  void *Cf(LISTNODEPTR *[][10]);

当我想通过引用将startptr传递给Cf函数时,

  Cf(&startptr);

我得到的错误是我在这里待了几个小时而且我真的不知道该做什么:(

cannot convert from 'LISTNODEPTR (*)[19][10]' to 'LISTNODEPTR *[][10]'

任何人都可以告诉我它在说什么吗?

当我在c中写下所有上面的代码时,它就像一个魅力,并且没有问题地传递startptr,但是当我在c ++上尝试它时问题开始;

1 个答案:

答案 0 :(得分:2)

首先,我不认为这两个陈述是正确的:

typedef struct listNode {
char* val ;
struct listNode *next;
};
typedef struct listNode LISTNODE;

您是否为同一件事声明了两次typedef?将其更改为:

typedef struct {
    char* val ;
    struct listNode *next;
    } LISTNODE;

接下来,您的功能所期望的值以及您传递的值不是相同的东西。这一行void *Cf(LISTNODEPTR *[][10]);意味着函数应该传递一个指向2D数组结构的指针数组,而你传递的是其他东西。 将您的函数声明更改为

void *Cf(LISTNODEPTR [][10]);

然后使用Cf(startptr);调用它。这意味着该函数期望结构的2D数组,并且您传递相同的东西。