C Pointer-Rätsel

Krik

Fleet Admiral Pro
Registriert
Juni 2005
Beiträge
17.979
Moin


Dieses Rätsel haben wir letztens in der Übung durch genommen und ich möchte es euch nicht vorenthalten:

Code:
char   *c[] = { "ENTER", "NEW", "POINT", "FIRST" };
char  **cp  = [ c+3, c+2, c+1, c };
char ***cpp = cp;

// main-Methode blabla
printf(... %s ..., **++cpp);
      -"-          *--*++cpp+3);
      -"-          *cpp[-2]+3);
      -"-          cpp[-1][-1]+1);
Na, was wird ausgegeben? Nicht vorher kompilieren und nachschauen, sondern selber tüfteln.

Wer der Meinung ist, die richtige Lösung gefunden zu haben, kann mir eine PN schicken und ich sage dann, ob es richtig oder falsch ist.
In ein paar Tagen poste ich die Lösung.

Wer das richtig hin bekommt, ohne zu cheaten, der kann mit Fug und Recht behaupten, dass er mit Pointern umgehen kann.


Gruß, Laurin
 
Zuletzt bearbeitet:
Ich glaube, auch ohne diesen Schwachfug da durchzutüfteln, bin ich durchaus im Stande mit Pointern umzugehen. Frage mich echt, welchen Nutzwert solche 'Übungen' haben sollen. Wer in der Praxis solchen Code schreibt, gehört erschossen.
 
Meines Wissens nach habe ich "Rätsel" und nicht "Praxis" geschrieben.
 
Dann bring den Code doch erst mal in einen Zustand, in dem sich nicht jeder Compiler die Seele aus dem Leib kotzen würde, wenn man ihn doch kompilieren möchte. :p Da sind so viele Fehler drin, daß man kaum erahnen kann, was denn eigentlich gemeint ist.
 
@antred: wenn du bei den wenigen aber offenscihtlichen fehlern kaum erahnst, was gemeint ist, dann würd ich lieber nochmal dein lieblings c-lernbuch auspacken ;)
 
Dese schrieb:


Wenn man schon ein Rätsel stellt, an dem sich Leute die Köpfe zerbrechen sollen, dann sollte man sie nicht auf eine falsche Fährte führen, indem man eine völlig zerhackte Version des Rätsels postet. Also hier mal die 'korrekte' Version:

Code:
char* c[] = { "ENTER", "NEW", "POINT", "FIRST" };
char** cp[]  = { c + 3, c + 2, c + 1, c };
char*** cpp = cp;

// main-Methode blabla
printf( "%s", **++cpp);
printf( "%s", *--*++cpp+3);
printf( "%s", *cpp[-2]+3);
printf( "%s", cpp[-1][-1]+1);

Das mit dem C-Lernbuch habe ich jetzt mal überhört! :p
 
Zuletzt bearbeitet von einem Moderator:
antred schrieb:

Apropos Fehler: Das Wort "daß" gibt es seit der Rechtschreibreform nicht mehr...und diese war schon vor vielen Jahren. Es heißt " dass"!

Gruß, Eisholz
 
Zuletzt bearbeitet von einem Moderator:
antred, ich hab keine ahnung WAS dich da auf eine falsche fährte führen könnte. ich find das irgendwie lustig. fand den pseudo c-code mit dem einen klammerfehler eigentlich ausreichend lesbar.
 
F_GXdx schrieb:
Ach, und Plenken wurde mit der Schlechtschreibreform wohl auch eingeführt?

Natürlich nicht. Wer allerdings "daß" schreibt, der weiß es nicht besser.
"Mein" Plenk ist aber tatsächlich aus Versehen passiert.

Gruß, Eisholz
 
Vielleicht sollte mit den offensichtlichen Fehlern verhindert werden, dass erstmal jeder das Programm mit C übersetzt und dann schreit: "ich weiß es, ich weiß es"

Ich finde solche Code-Segmente höchstens zu Demonstrations-Zwecken sinnvoll - wo der menschliche Verstand schnell wegen zuvielen Operationssymbolen aussteigt, läuft der Compiler noch durch und produziert sogar eine sinnvolle Ausgabe.
 
Eisholz schrieb:
Natürlich nicht. Wer allerdings "daß" schreibt, der weiß es nicht besser.

Nicht zwangsläufig. Es soll auch Leute geben, die es durchaus wissen, aber trotzdem und mit voller Absicht "daß" schreiben :)

/offtopic
 
Eisholz schrieb:

Vor der Rechtschreibreform war ich mir in Sachen Rechtschreibung eigentlich immer relativ sicher, was falsch und was richtig war. Aber mit Einzug der neuen Regeln und wohl auch mit zunehmendem Alter :rolleyes: schwindet diese Sicherheit zusehends dahin, und aus meiner Erfahrung bin ich da nicht der einzige.
Inzwischen mach ich's einfach, wie ich's mir denke, und so scheinen es auch die meisten in meinem Umfeld zu halten. Wenn ich mir so die Rundschreiben und Mails anschaue, die z.B. aus der Chefetage kommen :rolleyes:, stehe ich mich mit meiner Rechtschreibung eigentlich noch ganz gut da.
 
Zuletzt bearbeitet von einem Moderator:
Ich löse mal auf: Die Antwort ist weder A noch B noch C, sondern was zum Naschen!
 
Gut aufgepasst bei der Parade :)

Zum händischen Lösen der Aufgabe wird nicht nur Wissen um Zeiger verlangt, sondern auch Operator-Prioritäten in C. Gratuliere, wer das im Kopf hat - der kann mit Fug und Recht behaupten, dass er sonst scheinbar nichts zu tun hat.

Ich hätte nie gedacht, dass ich das nochmal sagen würde, aber: ich geh jetzt das Schwein holen!
 
Zuletzt bearbeitet:
antred schrieb:
Vor der Rechtschreibreform war ich mir in Sachen Rechtschreibung eigentlich immer relativ sicher, was falsch und was richtig war. Aber mit Einzug der neuen Regeln und wohl auch mit zunehmendem Alter :rolleyes: schwindet diese Sicherheit zusehends dahin, und aus meiner Erfahrung bin ich da nicht der einzige.
Inzwischen mach ich's einfach, wie ich's mir denke, und so scheinen es auch die meisten in meinem Umfeld zu halten. Wenn ich mir so die Rundschreiben und Mails anschaue, die z.B. aus der Chefetage kommen :rolleyes:, stehe ich mich mit meiner Rechtschreibung eigentlich noch ganz gut da.

Es ist natürlich die bequeme Variante dass man sagt: "Inzwischen mach ich's einfach, wie ich's mir denke" oder man schiebt's auf das Alter.
Eine Alternative wäre, dass man sich mit der Materie befasst. Das würde die "Sicherheit" sicherlich erheblich verbessern.
Was die Rechtschreibung aus Chefetagen betrifft, muss ich dir zustimmen. Die ist teilweise auch nicht gerade auf dem neuesten Stand. ;-)

Gruß, Eisholz
 
Eisholz schrieb:

Ah, so furchtbar wichtig ist das doch alles nicht, zumal es eh kaum noch Deutsche gibt, die ihre Muttersprache 100%-ig beherrschen. So lange das Geschriebene einigermaßen klar und verständlich rüberkommt, sind mir solche Details wie dass vs. daß völlig Wurscht. :p

Zum Beispiel hast du ja selbst gerade in deinem Beitrag mindestens 2 Kommas augelassen, die da eigentlich hingehören. ;)
 
Zuletzt bearbeitet von einem Moderator:
antred schrieb:
So lange das Geschriebene einigermaßen klar und verständlich rüberkommt
Solange ist hier eine Konjunktion und wird zusammen geschrieben :D

Da soll nochmal einer sagen C wär ne schwierige Sprache, Deutsch ist viel schwieriger.
 
Zuletzt bearbeitet:
Danke fürs Thread hijacken und irgendwelchen Nonsens hier posten. Ein Mod kann es schließen, das hier führt zu nichts und hat mit dem Thema an sich überhaupt nichts mehr zu tun.
 
Zurück
Oben