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?谢谢 展开
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?
展开全部
使用引用就可以了
声明:
void x(char *&a)//声明一个指向引用的一个指针
{a="123123";}
调用:
char *str ;
str = "aaa" ;
x(str) ;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
基础形参实参问题,你的
a="123123";
只是给函数形参赋值为常量字符串,但是实参指向的地址的字符串并没有改变,所以调用完没变化。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询