2-dim übergabe an eine Funktion



  • Hi

    Angenommen ich habe ein 2-dim Array mit fixer Größe:

    char m_Array[CONST_X][CONST_Y];

    und will es an ein Funktion übergeben, die mit beliebigen Größen umgehen soll, wie mache ich das?

    z.B.
    void Func(char **aArray, int size_x, int size_y)
    oder
    void Func(char aArray[][], int size_x, int size_y ) mag nicht.

    Oder Frage: Kann ich, wenn ich einen Pointer auf die erste Varibable aus dem Array übergebe, sicher sein dass ich mit einer linearen Verknüpfung der size_x und size_y immer das richtige Element treffe?

    Also z.B.

    Func( &m_Array[0][0], CONST_X, CONST_Y)
    
    mit
    
    void Func(char* pBuffer, int size_x, int_size_y)
    {
      for (int x = 0; x < size_x; x++)
    {
    for (int y = 0; y < size_y; y++)
    {
    // Accessing Element at x/y
    char c = *(pBuffer++);
    ...
    }
    }
    

    Würde das so klappen?

    Stefan



  • so funktioniert das ganz bestimmt nicht, denn: deine Funktion verlangt einen char-Pointer. Was du ihr gibst ist aber ein Pointer auf einen Pointer auf einen Pointer vom Typ char (char***). Denn mit dem &-Operator greifst du ja auf die Adresse zu!!!
    Anstonsten sollte das aber funktionieren...

    Mfg, smasher1985



  • Schreib statt "&m_Array[0][0]" einfach "m_Array".


Anmelden zum Antworten