質問者
String^型引数を使用した関数呼び出しについて

質問
-
String型の引数を与えて関数を呼び出していますが、処理結果を引き渡すことができません。
解決策のご教授をお願いします。
プログラムは簡単にモデル化すると次の通りです。
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
String^ strDRV = "DRV1";
String^ strPWD = "PWD1";
int iResult;iResult = USBPWDGET(textBox1->Text,(String^)strPWD);
char chpos[4];
_itoa_s(int(iResult),chpos,10);
textBox2->Text = gcnew String(chpos);
textBox3->Text = strPWD; <-----結果として「PWD1」が表示されます。
} なぜ「12345678901234567890」が表示できないのでしょうか?//---------------------------------------------------------------------------
int USBPWDGET (String^ argDRV, String^ argPWD) {
argPWD = "12345678901234567890";
return 0;
}関数 USBPWDGET の結果を引き渡すにはどうすればよろしいのでしょうか?
Stringの扱いがよくわかっていない初心者です。
すべての返信
-
C言語で、が 10と表示されないのと同じで、値渡しになっているからです。
#include <stdio.h> void foo(int n) { n = 10; } int main(void){ int n = 0; foo(n); printf("n = %d\n", n); return 0; }
参照渡しで渡すには % を付けてください。int USBPWDGET (String^ argDRV, String^ argPWD)
↓↓↓
int USBPWDGET (String^ argDRV, String^% argPWD)
類似スレ:DataTableやDataSetの参照渡しをする方法について
http://forums.microsoft.com/msdn-ja/ShowPost.aspx?PostID=815994&SiteID=7