首页 > 编程语言 > 详细

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

时间:2019-07-11 16:50:13      阅读:142      评论:0      收藏:0      [点我收藏+]

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

int pthread_create(pthread_t *tidp,const pthread_attr_t *attr,
(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

 

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

原文:https://www.cnblogs.com/lx17746071609/p/11170759.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!