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

我用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?谢谢

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

你将函数声明为:

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

调用时,

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

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

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

understand?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-08

使用引用就可以了

声明:

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

调用:

char *str ;
str = "aaa" ;
x(str) ;

第2个回答  2013-08-08

基础形参实参问题,你的

a="123123";

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

相似回答