C++ struct 函数传值的问题
本帖最后由 luoyuehao 于 2014-01-19 20:09:29 编辑 今天碰到个问题。。。struct的值怎么都没办法从函数里面拿出来。
结构定义:
stuct password_digest
{
char* a;
char* b;
char* c;
}
函数是:
password_digest get_password_digest(struct password_digest & pdi)
{
password_digest pd_return;
......
char * temp = ".........................";
pd_return.a = temp;
memcpy(&pdi, &pd_return, sizeof(password_digest));
return temp;
}
我的目的是把函数里面生产的char* temp给传出来、用个结构装着其中内容,把结构传出来。。。
调用情况是:
password_digest pdi1, pdi2;
pdi2 = get_password_digest(pd1);
结果是:pd1和pd2中的a的地址和函数里的pd_return.a的地址是一样的。。。
在pdi2 = get_password_digest(&pd1)这行调试,值是传出来了,再执行两行。。。里面的数据全没了。。。
现在该怎么处理这样的问题。。。
上面用memcpy就是为了能将结构体的内容全部复制一遍重新分配内存。。。怎么还是这样
[解决办法]
memcpy(&pdi, &pd_return, sizeof(password_digest));
注:
你的pdi指针成员数据需要内存空间,否则出错,你需要手动给它分配。,
[解决办法]
这个结构体内都是指针,有什么用呢?