直接看代码
将int型转为void *类型后,再将void *类型转为int类型,gcc编译的时候会报警告如下
结果还是能运行成功的
(void *)i=0xf
&i=0x7fff14e4de7c
(int)(void *)i=15
这是在学习多线程的socket编程时遇到的一个问题,pthread_create函数的最后一个参数是void类型,在给子线程传accept函数生成的客户端描述符时,不能直接传地址,因为线程工作在同一进程空间,与主线程是连通的,参数都能互相访问与操作,如果传了客户端描述符地址去子线程,当主线程又收到一个新的客户端,生成一个新的客户端描述符时,前面创建的传进子线程的客户端描述符就会变为新生成的这个描述符,这是不合理的,所以,应该将描述符这个值转为void *传进去,就得将int转换为void *,这在多线程中有很大的作用。