C++写的DLL 如何传递字符串?

我用C++写了一个DLL,DLL的函数是boolx(char*a){a="123123";},然后我又写了一个EXE调用这个DLLchar*str="aaaaa";x(s... 我用C++写了一个DLL,DLL的函数是bool x(char *a){a="123123";},然后我又写了一个EXE调用这个DLL
char* str="aaaaa";
x(str);
但是执行完之后,str的内容依然是aaaaa,我该怎么修改才能让DLL修改exe传过去的这个str?让exe执行完函数x之后,str变为123123?谢谢
展开
 我来答
百度网友cd8541ae4
推荐于2017-10-07 · TA获得超过264个赞
知道小有建树答主
回答量:126
采纳率:100%
帮助的人:113万
展开全部

这个不是dll的问题。是函数声明的问题。

你将函数声明为:

bool x(char **a)
{
    *a = "123123";
}

调用时,

char *str = "aaaaa";
x(&str);

原因是:如果将将str作为参数,str在函数执行完了之后,其值是不会改变的(任何参数的值在函数结束后都不会改变),还是"aaaaa"的地址。

当你将参数改为&str,记为p,p的值是一个地址,该地址指向str,运行函数后,str指向了”123123“,p没变,但是str变了。

understand?

百度网友0ee9ace0b
2013-08-08 · TA获得超过287个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:184万
展开全部

使用引用就可以了

声明:

void x(char *&a)//声明一个指向引用的一个指针
{a="123123";}

调用:

char *str ;
str = "aaa" ;
x(str) ;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
欢乐多Ek
2013-08-08 · TA获得超过478个赞
知道小有建树答主
回答量:477
采纳率:0%
帮助的人:416万
展开全部

基础形参实参问题,你的

a="123123";

只是给函数形参赋值为常量字符串,但是实参指向的地址的字符串并没有改变,所以调用完没变化。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式