Das erinnert mich daran warum ich die Sprache C nach Möglichkeit nur auf Mikrocontrollern benutze:
rschaten% cat array.c
#include <stdio .h>
int main(int argc, char **args) {
char *string = "abc";
printf("%c %c %cn", string[0], string[1], string[2]);
printf("%c %c %cn", 0[string], 1[string], 2[string]);
return 0;
}
rschaten% gcc -o array array.c
rschaten% ./array
a b c
a b c
rschaten%
Das habe ich aus dem Unix Haters Handbook, ich hätte nicht gedacht dass das wirklich funktioniert…
Wo ist da das Problem? x[y] bedeutet das, was an stelle y mit offset x ist, ist also im wesentlichen identisch mit *(x + y). Da Addition kommutativ ist, gilt offensichtlich *(x + y) == *(y + x) == x[y] == y[x]. C kann so einfach sein
@FaUl: Ja, das hat Frogger auch so erklaert, und genau so stand es auch im oben genannten Buch. Gruselig ist es trotzdem. Ich dachte immer, Perl waere schlimm, was das ‚Design‘ der Sprache angeht…
(Disclaimer: Perl nutze ich trotzdem recht haeufig. Bin mir halt nur darueber im klaren dass man da Mist mit machen kann.)
… das hängt halt davon ab, was man als
gutes Design“ ansieht?
Immerhin gibt ja allgemein gültige Regeln, wie FaUl zeigt.