pointer auf array



  • hallo,

    das problem ist simpel, aber ich bin wohl zu dumm dafuer. ich will einen pointer auf ein 2d string array zeigen lassen.

    char *str[][2]=
    {
     "1", "eins",
     "2", "zwei"
    };
    char (*pt)[2];   // <- offensichtlich falsch
    
    pt = str;  // <- geht nicht!
    

    danach will ich zb mit pt[0][1] auf "eins" zugreifen koennen.

    die frage. wie muss pt definiert werden?



  • typedef ist dein freund:

    typedef char* zeiger;
    typedef zeiger* zeiger_auf_zeiger; //== 2dim array
    typedef zeiger_auf_zeiger* zeiger_auf_2dim_array;

    zeiger_auf_2dim_array ist somit ein ... ?



  • ich glaube leider nicht 😞

    denn eine

    zeiger_auf_2dim_array pt;
    

    funktioniert leider nicht. habe ich etwas falsch verstanden? bei der definition eines pointers auf ein 2d *char array muss ich meines wissens nach unbedingt auch die dimension (spaltenanzahl) angeben ( hier [2]). wenn nicht, weiss der compiler nie wie er rechnen soll.

    mein beispiel von oben
    aus pt[1][0] wird [2] ( 1 * 2) + 0;
    aus pt[2][1] wird [5] ( 2 * 2) + 0;

    und worin besteht der unterschied zwischen
    zeiger_auf_zeiger z2 und char **z2 ?

    fragen ueber fragen

    die compiler meldung dazu:
    error C2440: '=' : 'char ()[11][2]' kann nicht in 'char *** ' konvertiert werden



  • ich habe leider noch keine loesung gefunden.

    noch jemand ideen?



  • Du hast ein "Array auf Array[2] von Pointern" und suchst einen "Pointer auf Array[2] von Pointern". Analog zu char a[2] => char *pa;

    Damit isses dann einfach:

    char *(*pt)[2] = str;
    puts(pt[0][1]); /* => "eins" */
    

    shade: ein 2D-Array und ein Pointer auf einen Pointer sind 2 völlig verschiedene Dinge



  • @Bashar

    klasse. funktioniert einwandfrei! warum bin ich da nicht selbst drauf gekommen? 🙂


Anmelden zum Antworten