创建了这个指针之后
例如创造void *ptr 以及int i=9;
怎样才能将i的地址赋给ptr;
能否创建一个void 指针指向任何类型的变量??
答案:4 悬赏:40 手机版
解决时间 2021-01-01 22:07
- 提问者网友:戎马万世
- 2021-01-01 12:31
最佳答案
- 五星知识达人网友:青灯有味
- 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); //合法
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 *来实现传递任何类型的参数的(包括自定义类型),不过在使用的时候,必须转换回去
如有疑问,请追问。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯