Hi!
Ich bin gerade dabei über Zeiger in C++ zu lernen.
Dort stoße ich auf ein Problem:
1. #include
2. using namespace std;
3. void main()
4. {
5. int Feld[] = {5,10,15,20,25};
6. int\* ptr = Feld;
7. int eineVariable = ptr[2];
8. cout
warum in 6. Zeile nicht so:
_int\* ptr = &Feld;_
und warum in 7. Zeile:
**int eineVariable = ptr[2];**
anstatt:
_int eineVariable = \*ptr[2]_
Ich weiss, wenn ich die entsprechende Zeile mit den kursiven Zeile ersetze, bekomme ich Fehlermeldung. Aber ich verstehe nicht, warum.
Könnte jemand mir erklären? Vielen vielen Dank.
Viele Grüße
Theo
> 1. #include
> 2. using namespace std;
> 3. void main()
> 4. {
> 5. int Feld[] = {5,10,15,20,25};
> 6. int\* ptr = Feld;
> 7. int eineVariable = ptr[2];
> 8. cout
> warum in 6. Zeile nicht so:
> _int\* ptr = &Feld;_
weil durch die Arraydeklaration ist Feld automatisch schon ein Pointer auf das Array.
> und warum in 7. Zeile:
> **int eineVariable = ptr[2];**
> anstatt:
> _int eineVariable = \*ptr[2]_
Durch den Arrayzugriff [] wird der Pointer automatisch dereferenziert.
Hi!
Ich bin gerade dabei über Zeiger in C++ zu lernen.
Dort stoße ich auf ein Problem:
warum in 6. Zeile nicht so:
int* ptr = &Feld;
und warum in 7. Zeile:
int eineVariable = ptr[2];
anstatt:
int eineVariable = *ptr[2]
Ich weiss, wenn ich die entsprechende Zeile mit den kursiven
Zeile ersetze, bekomme ich Fehlermeldung. Aber ich verstehe
nicht, warum.
Könnte jemand mir erklären? Vielen vielen Dank.
ptr[2] kannst du jederzeit auch mit *(ptr+2) ersetzen (und auch umgekehrt), die Schreibweise ptr[2] ist einfach eine etwas einfachere und übersichtlichere Schreibweise. In C(++) werden Zeiger sehr viel verwendet und deshalb wurden dafür eigens Konstrukte geschafen.
MfG Peter(TOO)