C++ char* 的若干问题之一

来源:互联网 发布:网络语言暴力论文观点 编辑:程序博客网 时间:2024/05/16 11:42

已有方法:

 //十进制转二进制char* decimal2binary( int numth) {string key; bitset<4> t;t = numth;key = t.to_string();char* ch = const_cast<char*>(key.c_str());//const char* 转 char*return ch;}

有如下调用:

char **libraryKeys;libraryKeys = (char**)malloc(10*sizeof(char*));int j;for(j = 0; j < 10; j++){libraryKeys[j] =  (char*)malloc(4*sizeof(char));libraryKeys[j]  = decimal2binary(j);}

结果得到libraryKeys的十个值均为1001(即循环最后一次十进制9转换的二进制值);

将该调用更改为如下即可:

char **libraryKeys;libraryKeys = (char**)malloc(10*sizeof(char*));int j;char* key = new char[4];for(j = 0; j < numKeys; j++){libraryKeys[j] = (char*)malloc(4*sizeof(char));key = decimal2binary(j);strcpy(libraryKeys[j], key);}



0 0
原创粉丝点击