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");

你可能感兴趣的:(游戏)