今天在蟑螂的指导下弄了个小程序:
设计函数,参数为一个int值,返回此数字的16进制字符串。
解答:
#include <iostream>
char* func(int value)
{
char a[16]={'0','1','2','3','4','5','6',
'7','8','9','A','B','C','D','E','F'};
int b=0X0f;
char *ret=new char[11];
//这个地方可以看出C的精巧来,就象是在微雕
for(int i=0;i<8;++i)
{
//value&b是把b作为掩码来与,(value&b)>>(i*4)是再移位,
//a[(value&b)>>(i*4)]是在a[]中查找相应的字符
ret[9-i]=a[(value&b)>>(i*4)];
//把b左移
b=b<<4;
}
ret[0]='0';
ret[1]='x';
ret[10]='\0';
return ret;
}
main()
{
char* pl=func(12);
std::cout<<pl<<std::endl;
delete[] pl; //释放堆内存
pl=NULL; //释放pl后,pl成为野指针,再把他置为NULL比较好
}