G
XFame schrieb:
Aber so gesehen koennte man bei Variante:
int* a, b;
denken, dass beide Variablen Zeiger sind!
Wie ich schon sagte, ist das imo eine Designschwäche. Wenn ich sowas als Anfänger sehe, würde ich auch darauf tippen, dass beide Variablen Zeiger sind. Machst du zB folgendes
typedef int* int_zeiger;
int_zeiger a, b;
sind plötzlich beide Variablen auch Zeiger.
XFame schrieb:
Ach ja: Sind Arraynamen nicht einfach nur Zeiger aufs erste Element
Nein, sind sie nicht. Darüber gabs aber schon einige Diskussionen hier im Forum.
Guck mal hier http://www.c-plusplus.net/forum/viewtopic.php?t=91822 und lies dir die Beiträge von Bashar und mir durch.
XFame schrieb:
Naja, und was meintest du nun mit Konstanten?? Hab ich den Zusammenhang nicht ganz verstanden sry .
Bei Variablen, die by-value übergeben werden, brauchst du dir keine Sorgen machen, dass ihr Wert verändert wird. Du arbeitest ja mit Kopien, die nach dem Ende der Funktion wieder zerstört werden. Sachen wie
void foo(const int x)
sind deshalb auch recht sinnfrei.
Wenn du hingegen eine Variable hast, die du by-reference übergibst, arbeitest du mit dem ursprünglichen Wert. Wenn du dort etwas veränderst, wird sich das auch ausserhalb der Funktion auswirken. Ist dies nicht erwünscht, machst du die "Referenz" einfach const, zB
void foo(const bar* x)
.
Damit wird sichergestellt (sofern du keine Casts benutzt), dass lesender Zugriff möglich ist, aber kein schreibender.