在C中,从char *到void *的转换是做什么的吗?

时间:2010-05-07 10:22:12

标签: c

请查看下面提到的代码段并告诉我差异?

int main()
{
struct sockaddr_in serv_addr, cli_addr;
/* Initialize socket structure */
    bzero((char *) &serv_addr, sizeof(serv_addr));
}

现在,如果我在没有类型转换(char *)的情况下做类似的事情,那么我觉得它会做同样的事情呢?有人可以澄清吗?

/* Initialize socket structure */
bzero( &serv_addr, sizeof(serv_addr));

2 个答案:

答案 0 :(得分:4)

由于第一个参数是void *,您只需要使用C ++进行强制转换。

在C中这不是必需的,因为void *被引入 1 正是因为不会需要将它转换为其他对象或从其他对象转换 2 指针。 (与malloc()和其他处理void * s)

的函数类似
  1. 在C89。
  2. 任何非功能指针。

答案 1 :(得分:2)

不需要广播,因为bzero()接受void*作为第一个参数,AnyType*可以隐式转换为void*