指针作为函数参数的调用疑点

指针作为函数参数的调用疑问
本帖最后由 shdjkha 于 2014-11-03 12:23:08 编辑
int bitree_ins_left(BiTree *tree,BiTreeNode *node,const void *data)
bitree_ins_left的函数声明如上,我的问题是为什么调用bitree_ins_left的时候,函数的参数data可以写成AvlNode结构的指针呢?下面是AvlNode结构的定义。而我看书上调用bitree_ins_left的时候,data的实参直接调用的AvlNode结构的指针,这算不算是类型不符啊?
typedef struct AvlNode_{
void *data;
int hidden;
int factor;}AvlNode
------解决思路----------------------
const void *data
void*可以表示一切类型的指针。你只要在函数中转换回来就ok了
------解决思路----------------------
就是为了可以进行强制转化而写成void*,只要你保证传进去和接收的类型一致就可以在函数内部进行强制转化而没有问题。
------解决思路----------------------
指针的长度都是一样的。在一些严格的编译器可能会提出类型不符,需要显式转换二个指针。但大部份编译器都会通过的。