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

急unsigned char*返回值不正确,该怎么解决

2012-02-29 
急!unsigned char*返回值不正确小弟刚接触C不久,烦各位帮忙看看下列代码哪里有问题,怎么返回值(D)不正确.

急!unsigned char*返回值不正确
小弟刚接触C不久,烦各位帮忙看看下列代码哪里有问题,怎么返回值(D)不正确.
      谢谢各位了.
#include   <iostream>
#include   <string.h>
#include   <stdio.h>
//unsigned   char*   myanwser();
static   const   unsigned   char*   myanwser()
{
int   i,j;
unsigned   char   A[6]= "abcd\n ";
unsigned   char*   B;
//for(int   i=0;i <5;i++)
//{
//     printf( "A:   %c\n ",A[i]);
    //B++;
//}
//unsigned   char*   B;
//B=A;
/*for(j=0;j <5;j++)
{
    printf( "B:   %c\n ",*B);
    B++;
}*/
B=A;
return   B;
}

int   main()
{
int   j;
unsigned   char*   D;
//D=(unsigned   char*)malloc(5);
//memcpy(D,(unsigned   char*)myanwser(),5);
//D=(unsigned   char*)myanwser();
D=(unsigned   char*)myanwser();
for(j=0;j <5;j++)
{
    printf( "C:   %c\n ",*D);
    D++;
}
return   0;

}


[解决办法]
哎,又是返回栈中变量错误。
[解决办法]
unsigned char* D;要定义为
const unsigned char* D;
[解决办法]
不是, 不能赋值
把你myanwser()函数的const 去掉
[解决办法]
return语句返回指向“栈内存”的指针,因为该内存在函数结束时自动消亡
[解决办法]
static const char* myanwser()
{
int i,j;
char A[6]= "abcd\n ";
char* B;

B= "abcd\n ";
return B;
}
改为这个的话,能成功
因为myanwser内的“abcd\n”是常量字符串,位于静态存储区,它在程序生命期内恒定不变。无论什么时候调用myanwser,它返回的始终是同一个“只读”的内存块。

热点排行