Allgemeine Frage zu Pointern
-
wollt mal wissen warum ich in dem folgenden Programm op = *argv[2]; mit * machen muss und net einfach op = argv[2]; schreiben kann. Gibts ne Faustregel wann ich Pointer benutzen muss ausser wenn ich z.b. mehrere Funktionen benutz?
#include <stdio.h> #include <stdlib.h> #include <string.h> #define TRUE 0 int main(int argc, char *argv[]) { double zahl1,zahl2; char op; zahl1 = atof(argv[1]); zahl2 = atof(argv[3]); op = *argv[2]; if (op=='+') printf ("%6.2f", (zahl1+zahl2)); if (strcmp(argv[2],"-")==TRUE) printf ("%6.2f", (zahl1-zahl2)); if (op=='*') printf ("%6.2f", (zahl1*zahl2)); if (strcmp(argv[2],"/")==TRUE) printf ("%6.2f", (zahl1/zahl2)); return 0; }
-
Weil der Funktion main hier die Argumente als char* übergeben werden, mußt Du hier auch das Argument als Pointer nutzen.
-
SkEaToN schrieb:
wollt mal wissen warum ich in dem folgenden Programm op = *argv[2]; mit * machen muss und net einfach op = argv[2]; schreiben kann.
Ganz einfach. argv[2] ist ein Zeiger auf einen char, darum kannst du nicht einfach op = argv[2] schreiben bzw. macht es wenig Sinn und es würde nicht das Erwartete rauskommen. Mit dem * verweist du auf den Speicherbereich auf den argv[2] zeigt, also auf ein char.