Visual C++ .NET/Function/Function parameter
Содержание
param array parameter
<source lang="csharp">
- include "stdafx.h"
using namespace System; int Total( int a, ... array<int>^ varargs) {
int tot = a; for each ( int i in varargs) { tot += i; } return tot;
} int main() {
int sum1 = Total(100, 200, 350); Console::WriteLine("First total: {0}", sum1); int sum2 = Total(1, 2, 3, 4, 5, 6, 7, 8); Console::WriteLine("Second total: {0}", sum2);
}
</source>
parameter passing
<source lang="csharp">
- include "stdafx.h"
void byvalue(int i) {
i += 1;
} void byref(int& i) {
i += 1;
} int main() {
int j = 10; System::Console::WriteLine("Original value: " + j); byvalue(j); System::Console::WriteLine("After byvalue: " + j); byref(j); System::Console::WriteLine("After byref: " + j);
}
</source>
pass by reference
<source lang="csharp">
- include "stdafx.h"
using namespace System; value class Pair {
public: int x; int y;
}; void swap_values(Pair% pair) {
int temp = pair.x; pair.x = pair.y; pair.y = temp;
} int main() {
Pair p; p.x = 5; p.y = 3; Console::WriteLine("{0} {1}", p.x, p.y); swap_values(p); Console::WriteLine("{0} {1}", p.x, p.y);
}
</source>
pass by value
<source lang="csharp">
- include "stdafx.h"
using namespace System; ref struct R {
R() { val = 1; } // copy constructor R( R% r) { val = r.val; } property int val;
}; void f(R r_local) {
r_local.val = 2; Console::WriteLine("Within f: " + r_local.val);
} int main() {
R r; f(r); Console::WriteLine("Outside f: " + r.val); R^ rhat = gcnew R(); f(*rhat); Console::WriteLine("Outside f: " + rhat->val);
}
</source>
Passing array as parameter
<source lang="csharp">
- include "stdafx.h"
using namespace System; void set_to_one(int i, array<int>^ array_arg) {
array_arg[i] = 1;
} int main() {
array<int>^ array1 = { 0, 1 }; set_to_one(0, array1); Console::WriteLine(" {0} {1}", array1[0], array1[1]);
}
</source>
Passing value struct to function
<source lang="csharp">
- include "stdafx.h"
using namespace System; value struct V {
int a; int b;
}; void f(V% v) {
v.a = 10; v.b = 20;
} int main() {
V v; v.a = 1; v.b = 2; f(v); Console::WriteLine("{0} {1}", v.a, v.b);
}
</source>