C++ cli 在C+中通过引用传递参数+/CLI,因此重新分配会影响调用者 也许这不是一个困难的问题,但我总是有点困惑,如何处理字符串类型作为一个参数在VisualC++中。我有以下功能: void function_1(String ^str_1) { str_1 = gcnew String("Test"); } void function_2() { String ^str_2 = nullptr; function_1(str_2); }

C++ cli 在C+中通过引用传递参数+/CLI,因此重新分配会影响调用者 也许这不是一个困难的问题,但我总是有点困惑,如何处理字符串类型作为一个参数在VisualC++中。我有以下功能: void function_1(String ^str_1) { str_1 = gcnew String("Test"); } void function_2() { String ^str_2 = nullptr; function_1(str_2); },c++-cli,pass-by-reference,C++ Cli,Pass By Reference,调用function_1后,str_2仍然等于null,但我想实现的是str_2等于Test。那么,如何将stru 1的内容传递给函数2 谢谢你的建议。使用: 解释:传递String^就像传递指针一样。仅对引用的本地副本进行更改字符串^%就像将引用传递给引用。。。就像调用函数时将指针传递给指针一样,函数应该更改原始指针。谢谢!今天学到了一些东西@Agnel我不明白你为什么说当你传递一个指针时,只有引用的本地副本会被改变。首先,指针不是引用。其次,如果您通过C++中的指针并修改指向的数据,则不修改

调用
function_1
后,
str_2
仍然等于
null
,但我想实现的是
str_2
等于
Test
。那么,如何将
stru 1
的内容传递给
函数2

谢谢你的建议。

使用:


解释:传递
String^
就像传递指针一样。仅对引用的本地副本进行更改<代码>字符串^%就像将引用传递给引用。。。就像调用函数时将指针传递给指针一样,函数应该更改原始指针。

谢谢!今天学到了一些东西@Agnel我不明白你为什么说当你传递一个指针时,只有引用的本地副本会被改变。首先,指针不是引用。其次,如果您通过C++中的指针并修改指向的数据,则不修改数据的本地副本。我是不是被语义搞混了?伊恩,我的意思是,如果你传递一个指针并更改指针变量本身的值(与它指向的数据的值相反),那么只有本地指针变量的值会更改。是的,如果修改指针指向的数据,则会修改数据本身,而不是本地副本。不存在数据的本地副本;指针的本地副本确实存在。
void function_1(String ^%str_1)
{
  str_1 = gcnew String("Test");
}