首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎么实现像memcpy那样,即使参数类型不为void*编译器也不会报错

2012-06-19 
如何实现像memcpy那样,即使参数类型不为void*,编译器也不会报错?如题,自定义的函数,其中一个参数类为void

如何实现像memcpy那样,即使参数类型不为void*,编译器也不会报错?
如题,自定义的函数,其中一个参数类为void型指针,但调用时,使用其它类型变量作为参数,编译器会报错,加上取址符&可以解决;
但是,memcpy的第一个和第二个参数也是void型指针,为什么可以用任何类型变量作为参数?而且不用加取址符&。

[解决办法]
C与C++的区别吧

纯C的话,memcpy你传进去一个int型,也不报错,有些编译器会给警告

C++,void*指针只能传指针,不能传其他类型
[解决办法]

探讨
引用:

C与C++的区别吧

纯C的话,memcpy你传进去一个int型,也不报错,有些编译器会给警告

C++,void*指针只能传指针,不能传其他类型

是调用函数时,在参数前加上取址符&。
不是在定义函数时,在参数前面加取址符&。

[解决办法]
在C语言中任何类型的指针都可以转换为void*类型,且将它转换成原来的类型时不会丢失信息,所以调用memcpy函数时可以将参数类型强制转换成void*类型。这种转换通常不会影响到数据的实际表达,但要确保编译器不会报错。可见会报错的话,那就是你编译器的问题了。
[解决办法]
自定义的函数,其中一个参数类为void型指针,但调用时,使用其它类型变量作为参数,编译器会报错,加上取址符&可以解决? fuck 明明是你传参数类型传错了。怪不得报错。
[解决办法]
extern "C" {
...
}

热点排行