c ++函数没有被调用

时间:2018-04-03 03:52:22

标签: c++ pointers memory-address function-call

所以这就是我的函数声明:

void mdump(char* startAdrs, char* endAdrs);

在我的代码中,以下是我如何调用它:

char f = 'f';
char d[200*sizeof(int)];
mdump(&d, &f);

我得到的错误是:

无效的参数'候选人是:void mdump(char *,char *)'

为什么我无法正确调用mdump函数?

3 个答案:

答案 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);