Hej med jer,
Lige et spørgsmål for at se om jeg har forstået forskellen på de formelle og aktuelle parametre:
Jeg har lavet et pseudo-kode-skellet:
#include <iostream>
using namespace std;
//Global variables only
void functionName(dataType& variable…); //formal parameter list
int main()
{
//Local variables only
functionName(variable, variable etc.); //actual parameter list
}
return 0;
void functionName(dataType& variable…); //formal parameter list
{
statement
}
Jeg har forstået at Reference parametre gemmer på adressen til de tilsvarende aktuelle parametere.
Men hvad med Value parameters? Hvad er forskellen der?
Udfra dette program;
#include <iostream>
using namespace std;
void funOne(int a, int& b, char v);
void funTwo(int& x, int y, char& w);
int main() {
int num1, num2;
char ch;
num1 = 10; //Line 1
num2 = 15; //Line 2
ch = 'A'; //Line 3
cout << "Line 4; Inside main num1 = "<< num1 << ", num2 = " << num2 << ", and ch = " << ch << endl;
funOne(num1, num2, ch);
cout << "Line 6: after funOne; num1 = " << num1 << ", num 2" << num2 << ", and ch = " << ch << endl;
funTwo(num2, 25, ch);
cout << "Line 8; After funTwo; num1 = " << num1 << ", num2 = " << num2 << ", and ch = " << ch << endl;
return 0;
}
void funOne(int a, int& b, char v) {
int one;
one = a;
a++;
b = b * 2;
v = 'B';
cout << "Line 13; Inside funOne; a = " << a << ", b = " << b << ", v = " << v << ", and one = " << one << endl;
}
void funTwo(int& x, int y, char& w) {
x++;
y = y * 2;
w = 'G';
cout << "Line 17; Inside funTwo; x = " << x << ", y = " << y << ", and w = " << w << endl;
}
Kan jeg se at "funOne" hænger sammen 2 steder - først så kører compileren igennem, indtil "funOne(num1, num2, ch);" og dernæst hopper ud af main() funktionen og ned til
void funOne(int a, int& b, char v) og dermed bliver linie 13 udskrevet - efter det, bliver line 6 udskrevet. Det er som om compileren hopper frem og tilbage?? Jeg kan godt se at man har de formelle parametre (int a, int& b, char v) som peger på (num1, num2, ch), men i bund og grund hvad gør & referancen/adressen der?
Eller har jeg forstået helt forkert og bytter om på de forskellige parametre??
Hjælp påskønnes utroligt meget!!
På forhånd 1000 mange tak!
Indlæg senest redigeret d. 02.03.2008 14:45 af Bruger #13344