Pointer auf ein Strucarray



  • Hallo, ich komm hier nicht so richtig weiter. Ich möchte via Pointer auf ein Structarray zugreifen. Folgendes habe ich probiert.

    typedef struct
    	{
    		U8 id;
    		CString name;
    	} struct_t;
    
    	struct_t meinArray[3];
    
    	meinArray[0].id = 0;
    	meinArray[1].id = 1;
    	meinArray[2].id = 2;
    
    	meinArray[0].name = "Eins";
    	meinArray[1].name = "Zwei";
    	meinArray[2].name = "Drei";
    
    	MessageBox(meinArray[1].name);
    

    So weit so gut. Nun möchte ich wie gesagt per Pointer drauf zugreifen:

    struct_t *meinArrayPointer[3];
    	// wie müsste die folgende Zeile richtig aussehen? So funktioniert es nicht
    	meinArrayPointer = &meinArray;
    	MessageBox(meinArrayPointer[1]->name);
    

    Auf folgende Art und Weise kann ich z.B. auf den zweiten Eintrag zugreifen. Aber gehts nicht auch irgendwie mit meinArrayPointer[1]->name?

    struct_t *meinArrayPointer;
    	meinArrayPointer = meinArray;
    	meinArrayPointer+=1;
    	MessageBox(meinArrayPointer->name);
    

    lg Lisa



  • Du mußt den Zeiger nur einmal dereferenzieren - und das passiert implizit schon bei der Dereferenzierung. Das heißt da reicht:

    struct_t *meinArrayPointer;
        meinArrayPointer = meinArray;
        MessageBox(meinArrayPointer[1].name);
    


  • struct_t *meinArrayPointer = meinArray;
    MessageBox(meinArrayPointer[3].name);
    

    Und:

    typedef struct 
    { 
        U8 id; 
         CString name; 
    } struct_t;
    

    riecht übel nach C.



  • Vielen Dank! Das war wohl der berühmte Wald mit den Bäumen... 🙂


Log in to reply