char string void*的一些转换

原来不想遇到的问题终于又遇到了 在此做个记录

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

此外还有些小问题要注意

就是(char *)后面强制转换的是空的话,可能会影响到控制台输出问题

比如我这次就遇到了 可能会让控制台后面都不会输出,貌似是opengl控制台程序卡死,但是绘图地方还正常的

有时候也会崩溃


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

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

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值