C Probleme mit char Pointer Array

Jurij

Lt. Commander
Registriert
Juni 2008
Beiträge
1.247
Hallo zusammen!
Ich habe die Aufgabe bekommen, die Adresse von mehreren Strings in einem Array zu speichern.
Ich habe jetzt einfach mal ganz was simples probiert:
Code:
char *namen[2];
char test[] = "ABC";

namen[0] = &test;

printf("%p\n", namen[0]);
printf("%s\n", *namen[0]);
printf("%p", &test);

Hier soll eigentlich nur die Adresse von test in den ersten Eintrag vom Array gespeichert werden.
Und eigentlich funktioniert es auch, wenn ich es mir ausgeben lasse.
Probleme macht der Dereferenzierungsoperator in Zeile 7.
Sobald ich diese Zeile auskommentiere, funktionierts. Mit der Zeile allerdings nicht.
Der Compiler zeigt mir leider auch keinen Fehler an, sondern das Programm stürzt einfach ab.
Um den Inhalt anzeigen zu lassen, auf den der Pointer zeigt, brauche ich doch den * .

Wo ist mein Fehler? Danke!

Lg
Jurij
 
Zu Zeile 7: Durch name[0] "dereferenzierst" du doch schon, weil du auf den Inhalt des Arrays zugreifst. Indem du das * davor machst versuchst du den value-Wert zu dereferenzieren was nicht geht...das ist quasi doppelt gemoppelt.
 
Der Inhalt von einem Pointer ist doch eigentlich die Adresse auf die er zeigt.
Und ob ich einen einzelnen Pointer habe, oder ein Array von Pointern, dürfte doch keinen Unterschied machen?
Oder sehe ich das falsch?
 
test ist schon ein Pointer auf das erste Element des Strings. Mit &test speicherst du die Adresse des Pointers auf das erste Element. Du willst aber die Adresse auf die der Pointer zeigt und nicht den Pointer selbst.

Also so:
Code:
char *namen[2];
char test[] = "ABC";

namen[0] = test;

printf("%p\n", namen[0]);
printf("%s\n", namen[0]);
printf("%p", &test);

Gruß
BlackMark
 
Jetzt verstehe ich. Danke!
 
Zurück
Oben