Ich habe dieses kleine Programm:Inkrementieren Zeiger auf mehrdimensionales Array in C
#include <stdio.h>
int main() {
char *argv[3] = {{"abc"}, {"def"}, {"ghi"}};
printf("%c\n", (*++argv)[1]); //error. I wanted to print 'b'
printf("%c\n", *++argv[1]); //prints e
return 0;
}
die Fehlermeldung:
error: cannot increment value of type 'char *[3]'
printf("%c\n", (*++argv)[1]);
Ich möchte argv
zu erhöhen, um b
zu zeigen. Ich nahm diese Verwendung (*++argv)[i]
gerade aus C-Programmiersprache von K & R, wo sie ein Beispiel auf Seite 117 auf argv
inkrementieren genau wie ich. Sie weisen auch darauf hin, dass (*++argv)[0]
der Zeiger auf das erste Zeichen in einer Zeichenfolge ist, während *++argv[0]
den Zeiger argv[0]
inkrementiert. Tatsächlich wird (*argv)[1]
b
drucken, während *argv[1]
d
drucken wird. Doch irgendwie inkrementell (*++argv)[0]
bleiben nur Fehler.
Sie haben ein Array von Zeigern, kein Zeiger auf Array. und die Art, wie "argv" deklariert wird, könnte anders sein. Ich denke in k & r deklarierte es als "char **". – user3528438
wird es hilfreich sein, wenn Sie die Fehlermeldung anzeigen. In diesem Fall erhalten Sie den Fehler, weil 'argv' ein Array ist und Sie' '' '' '' nicht verwenden können, da sein Wert nicht geändert werden kann. – user3528438