永发信息网

能否创建一个void 指针指向任何类型的变量??

答案:4  悬赏:40  手机版
解决时间 2021-01-01 22:07
  • 提问者网友:戎马万世
  • 2021-01-01 12:31
创建了这个指针之后
例如创造void *ptr 以及int i=9;
怎样才能将i的地址赋给ptr;
最佳答案
  • 五星知识达人网友:青灯有味
  • 2021-01-01 13:52
使用类型转换的时,以void*为中介类型是个次等选项,能不用就别用。因为在强制类型转换中,转换到void*类型的结果会将带类型的指针(typed pointer)的类型信息悉数抹除,在典型的情况下,只要以void*为类型转换的中介类型,则必须牢记这个指针的原始类型信息,并(适时的在通过一次强制的类型转换恢复她)。如果供应了争取的指针原始类型信息,那么天下太平。但是由于平台的差异性,在进行可移植变化的时候,千万记住不可以使用static_cast进行基本类型到public可用方式的类型指针的转换,必须打散数据段,使用reinterpret_cast<>来进行逐个bit的转换

char *cp=static_cast<char*>(ip); //错误
char *cp=reinterpret_cast<char*>(ip); //合法
全部回答
  • 1楼网友:白昼之月
  • 2021-01-01 18:13
可以指向 , 在用的时候强制转换一下. *ptr = (void*)&i ; int b = (int)*ptr ;
  • 2楼网友:愁杀梦里人
  • 2021-01-01 17:03
使用强制类型转换 int i = 9; void *ptr = (void *)&i; 这样就可以了 在创建子线程时,就是通过void *来实现传递任何类型的参数的(包括自定义类型),不过在使用的时候,必须转换回去
  • 3楼网友:等灯
  • 2021-01-01 15:24
你好! 使用强制类型转换 int i = 9; void *ptr = (void *)&i; 这样就可以了 在创建子线程时,就是通过void *来实现传递任何类型的参数的(包括自定义类型),不过在使用的时候,必须转换回去 如有疑问,请追问。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯