所以这就是我的函数声明:
void mdump(char* startAdrs, char* endAdrs);
在我的代码中,以下是我如何调用它:
char f = 'f';
char d[200*sizeof(int)];
mdump(&d, &f);
我得到的错误是:
无效的参数'候选人是:void mdump(char *,char *)'
为什么我无法正确调用mdump函数?
答案 0 :(得分:3)
使用
mdump(&d, &f);
是编译器错误,因为&d
评估为char (*)[200*sizeof(int)]
。这不能转换为char*
。
您可以使用
mdump(d, &f);
超越编译器错误。但是,根据mdump
的参数名称来判断,第二个参数必须是d+sizeof(d)
。
mdump(d, d+sizeof(d));
答案 1 :(得分:0)
您不应该传递d
的地址,因为d
已经充当指向第一个元素的指针。
所以你应该这样做:
mdump(d, &f);
答案 2 :(得分:-1)
d是一个数组。所以只写d本身表示数组中第一个元素的地址。通过使用& d,您将发送指向char的指针。但是你需要发送指向char的指针。所以调用mydump的写方式是:
mdump(d, &f);