Anfängerfrage: array in anderer funktion bearbeiten, index falsch?



  • Hallo,

    ich bin ein C-Anfänger und probiere grad mit arrays und pointer rum(dementsprechend ist der codestil, sorry). Ich hab jetzt diesen kleinen Code geschrieben. Ich möchte dabei in einer anderen Funktion den Array bearbeiten.
    Was mir aufgefallen ist, wenn ich den Array ausgebe, dass wenn ich p[11] bearbeite in der Main-Funktion test[10] entspricht. Wieso ist das eigentlich oder ist der Ansatz unten überhaupt Schmafu?
    Danke für die Mühe!!

    static int testfunc(test) {
      int*p ;
      p = &test;
      p[1] = 222;
      p[2] = 333;
      p[3] = 444;
      p[11] = 1111;	
    }
    
    void main()
    {
      int * p;
      int test[10];
      test[0] = 22;
      test[1] = 33;
      test[2] = 44;
      test[10] = 1010;
      p=test;
      testfunc(p);
      printf("%i, %i, %i, %i  \n", test[0], test[1], test[2], test[10]);
      return;
    }
    


  • ...



  • ahh vielen Dank Swordfish. Sogar den Code zeilenweise kommentiert! Thx für die Mühe!! Im Vergleich merk ich erst wie grottenschlecht mein Code war 😃



  • Swordfish schrieb:

    static /* <- warum? */ int testfunc( /* Welcher Typ? Ohne typ wird int angenommen. Das willst du nicht.) */ test) {
    

    Warum nicht static ?


  • Mod

    TyRoXx schrieb:

    Swordfish schrieb:

    static /* <- warum? */ int testfunc( /* Welcher Typ? Ohne typ wird int angenommen. Das willst du nicht.) */ test) {
    

    Warum nicht static ?

    Die Frage von Swordfish hatte die pädagogische Absicht, dass der TE darüber nachdenkt, was static hier überhaupt genau macht. Dass es hier keinen Unterschied macht, ist nicht so wichtig. Wichtig ist, dass der TE den Unterschied kennt, wenn dieser wichtig wird. Ich habe nämlich die Vermutung, dass er das static einfach irgendwo abgeschrieben hat, weil er gesehen hat, dass manche/viele Programmierer es so einsetzen. Aber er hat nicht verstanden warum sie es einsetzen. Es ist sehr wichtig, dass man Dinge versteht, wenn man sie nachmacht.

    (Falls diese Einschätzung des TE nicht stimmen sollte: Entschuldigung für die Fehleinschätzung.)


Anmelden zum Antworten