我有链接列表和一些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 ++上尝试它时问题开始;
答案 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数组,并且您传递相同的东西。