For looping struct members with a pointer to a struct

Sor*_*enp 2 c struct pointers function-pointers arduino

I think my pointer game is rusty, I can't seem to get the for loop implementation to work. It's like the pointer isn't incremented along with the array. Any suggestions?

I implemented a "manual" version of what i want the loop to do. It worked as expected.

typedef struct txstruct_t
{
    uint8_t tx[8];
    void(*send)(struct txstruct_t *cthis, uint8_t arr[8]);

}txstruct_t;

void send(txstruct_t *cthis, uint8_t arr[8]);


void loop() 
{
    txstruct_t txobj;
    uint8_t buf[8] = { 1, 0, 1, 0, 1, 0, 1, 0 };
    send(&txobj, buf);

}

// This works
void send(txstruct_t *cthis, uint8_t arr[8])
{
    cthis->tx[0] = arr[0];
    cthis->tx[1] = arr[1];
    cthis->tx[2] = arr[2];
    cthis->tx[3] = arr[3];
    cthis->tx[4] = arr[4];
    cthis->tx[5] = arr[5];
    cthis->tx[6] = arr[6];
    cthis->tx[7] = arr[7];

    return;
};

/*
//This doesn't work :(
void send(txstruct_t *cthis, uint8_t arr[8])
{

    for (int i = 0; i < 8; i++)
    {
        cthis = cthis + i;
        cthis->tx[i] = arr[i];
    }

    return;
};*/

Run Code Online (Sandbox Code Playgroud)

I would love some clarification on this, so I could learn how to avoid this in the future! Maybe even a better method of implementing such buffers.

Bat*_*eba 5

cthis = cthis + i; can be removed. It makes no sense at all as it's an undefined attempt to somehow reset the pointer to the struct. You don't do that in the unrolled version of the loop, do you?

The other components of the loop are fine.