1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
int f(int a, int b);
void g(int &a, const int& b);
void h(int* a);
int main(){
int x=5;
x=f(x,3);
//x ist jetzt 8
g(x,7);
//x ist jetzt 1
h(&x);
//x ist jetzt 6
return 1;
}
int f(int a, int b){
//a und b sind neue Variablen, die nichts mehr mit x und 3 zu tun haben, abgesehen davon, dass der Wert von x in a kopiert wurde und 3 in b.
return a+b;
}
void g(int &a, const int& b){
//a ist eine Referenz auf x. Wird a geändert, ändert sich auch x. Und würde x geändert, dann änderte sich auch a. b ist eine Referenz auf 7, kann aber nicht geändert werden, da const. Dafür können feste Werte übergeben werden, bei int& ohne const ist das nicht möglich.
//int c = b; und die Modifikation von c ist aber möglich.
a-=b;
}
void h(int* a){
//a ist die Adresse von x. a ist eine eigene Variable und hat eigenen Speicher (und demnach auch wieder eine Adresse).
int** = &a; //b ist jetzt die Adresse von a.
*a = 6; //schreibe 6 an die Adresse, die in a gespeichert ist, also wird der Speicher, in dem x gespeichert ist, modifiziert, also x auf 6 gesetzt.
*b=nullptr; //a ist jetzt ein Nullpointer (zeigt auf keinen Speicher, auf den zugegriffen werden kann), aber x wurde nicht verändert und ist immer noch 6.
b =nullptr;//b ist jetzt auch ein Nullpointer, der Zugriff auf *b ist nun nicht mehr möglich.
}
|