C++ void/指针与其他数据类型的相互转换

匿名 (未验证) 提交于 2019-12-02 23:47:01

在写opencv多线程的时候用到了pthread_create()函数,

intconst
(void*)(*start_rtn)(void*),void*arg);

其中函数里最后一个变量声明为void* args。因为涉及到函数之间的传参,因此考虑将void*指针转换为string类型存放opencv图片存放路径,因为void*指针的特殊性,将void*作为中间指针变量,在string转换后的void*指针传入后,再将void* 转换为string类型,在调用的线程函数中imread(string path)。记录下来这种思路,以作以后参考。

此外还有些小问题要注意
就是(char *)后面强制转换的是空的话,可能会影响到控制台输出问题

另外在c++11之前的时候 头文件 不能char char_10[10] = "char_10";//错误 不能直接初始化

在gcc中却是带上11都没法初始化,一直报错array used as initializer

后来用string初始化,或者干脆不初始化 在其他地方
strcpy(char_10, "xxx");

string string_1 = "string_1"; string string_2 = "string_2"; char char_1 = 'char_1'; char char_2[] = "char_2";//不能在头文件定义 char char_10[10] = "char_10";   void *p1 = &string_1; void *p2 = &char_1; void *p3 = &char_10; void *p4 = (void *)string_2.c_str();   trace(string_1)//string_1 trace(char_1)//1 trace(char_10)//char_10   trace((string *)p1)//0x2cfc8c trace((char *)p2)//11 这里多出来一个1 trace((char *)p3)//char_10 trace((char *)p4)//string_2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!