Verständnisfrage



  • Was bedeutet der ausdruck **(a + 1)?
    ist das jetzt ein pointer?

    #include <iostream.h>
    #include <stdlib.h>
    #include <stdio.h>
    
    int main()
    {
          int i, j;
          float f;
          float a[2][2] = {{1.,2.}, {3.,4.}};
          f = **(a + 1);
          printf("%f\n", f);
    
          system("PAUSE");
          return 0;
    }
    


  • das ist gewissermaßen schon ein pointer, weil du ja auf arrays mit pointern zugreifen kannst (der name des arrays ist ein zeiger auf sein erstes element: x==&x[0])

    im falle eines zweidimensionalen arrays wäre das dann so:

    p[12][15]  = 26; // so kennt mans ja
    (p+12)[15] = 26; // equivalent
    *(*(p+12)+15) = 26; // equivalent
    

    du machst in dem code also letzteres, greifst dadurch dass du f=*(*a+1) schreibst, auf das element a[1][0] zu und weist f den wert zu...



  • [EDIT] Ich komm immer zu spät... [/EDIT]

    Hinweis: Lass die Endungen bei den Includes weg und nimm stattdessen "using namespace std;" oder schreib immer "std::" vor Sachen aus der Bibliothek.

    Und system() wird auch nicht gern gesehen. Mehr dazu steht in der FAQ.



  • cme386: wenn du dich austoben willst, beantworte doch meine frage ein paar threads drunter 😉



  • ich bin noch nicht ganz dahintergestiegen

    kann man den ausdruck **(a+1) auch als pointer auf einen pointer interpretieren?
    oder ist nur einer der beiden Sterne ein hinweis auf einen pointer und der andere --- tja keine ahnung --- irgendein anderer unärer operator?

    also ich möchte mal anders fragen:

    warum zwei sterne? und was würde der ausdruck bedeuten wenn nur ein stern davor stehen würde? müsste man bei dreidimensionalen vektoren mit drei sternen arbeiten?



  • *moon* hat die Loesung doch schon gesagt:

    *a == *(a+0) == a[0]
    *(a+1) == a[1]
    **a == a[0][0]
    **(a+1) == a[1][0]
    ((a+1)+1) == a[1][1]

    Lies dir dazu auch mal http://pweb.netcom.com/~tjensen/ptr/pointers.htm durch



  • vielen Dank *moon*
    habe gerade ein paar varianten ausprobiert und habs (denke ich mal) kapiert!


Anmelden zum Antworten