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

字符转换和内存有关问题

2012-03-09 
字符转换和内存问题voidstr_dess(char*source,char*dest,char*in_key,intflg)char*source 12345678 ch

字符转换和内存问题
void   str_dess(char   *source,   char   *dest,   char   *in_key,   int   flg   )

char   *source= "12345678 ";
        char   *dest;
char   *key= "nb2031nb ";
int   i=0;
str_dess(source,dest,key,i);
内存出错为什么???

还有为什么不能unsigned   char   *source= "12345678 ";
vc6会报错




[解决办法]
你那个dest指针没有初始化,再往那里写值的话,当然就会出错了
[解决办法]
unsigned char* source = "12345678 ";
-----
编译器会把 "12345678 "存储在静态存储区,并返回首地址char*

str_dess函数做什么操作?
[解决办法]
楼上的正解
[解决办法]
dest是个悬空指针,你往这个地址拷贝就会出错.

--------------------------------------------------


还有为什么不能unsigned char *source= "12345678 ";

这个是类型不匹配, "12345678 "默认为char*行,赋值给unsigned char*时就会类型不匹配.
编译时应该给出一个警告吧.
改成这样看看
unsigned char *source=(unsigend char*) "12345678 ";


[解决办法]
楼上正解~

[解决办法]
你可以将char * dest
改成char * dest[]
[解决办法]
你的dest指针并没有开辟内存空间,就往里面写入了数据,会写到非法的内存区,而报内存错误.

可以这样:

char *dest=new char[strlen(source)+1]; //分配内存空间


另外

unsigned char *source= "12345678 ";

当然是不行的,因为字符串的返回类型是char*,你这样赋值是类型不匹配

热点排行