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.


Anmelden zum Antworten