首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

请教小弟我这里为什么总有一个警告啊

2012-02-27 
请问我这里为什么总有一个警告啊??我这段程序哪里有问题?为什么总有一个警告?帮我看看啊=================

请问我这里为什么总有一个警告啊??
我这段程序哪里有问题?为什么总有一个警告?帮我看看啊
======================
char   szString[256]={0};
char   szBuff[1024]=   {0};
strcpy(szString,str.c_str());
int   iLen=strlen(szString);
for(int   i=0;   i <iLen   ;i++)
    {
    sprintf(szBuff+i*2, "%02X ",szString[i]);
    }
return   szBuff;
=======================
提示最后一句有问题,
警告为:[C++   Warning]   Unit1.cpp(29):   W8075   Suspicious   pointer   conversion
郁闷   ,要是把最后一句改成:
char   *a;
a=szBuff;    
return   a;就没有问题了,为什么呢??

[解决办法]
sprintf里的第一个参数,楼主是想干吗呢?
sprintf是以一定格式将参数2和3的内容复制到参数1的缓冲区中
而你是szBuff+i*2到底是想干吗呢?是想逐个字符复制???
只要这样用就OK了,sprintf(szBuff, "%02x ",szString);
如果是逐个字符复制的话这个用法就是错误的。。。
[解决办法]
你的程序是不正确的,返回的szBuff指针是个野指针。在你函数返回的时候,你的szBuff空间已经被释放了。就算你用你说的方法将警告去掉了,还是错误的。

我不清楚你为什么要返回空间的指针,如果真的要返回的话,请用new在堆上创建一个空间。
[解决办法]
局部指针是不能返回的,建议将函数的原形改称char* test(char * givePoint)传入givePoint然后再将givePoint返回,这样是最好的!

热点排行