c - Proper way to get reference to row in 2D array -
I have tried many times to find the answer to this question but I think I am spoiling my search, But I'm having a hard time taking my head around this time, I think a lot of time away from C. I think.
I have a compilation time that has been declared a 2D buffer:
uint8_t buffers [NUM_BUFS] [SIZE_BUF];
Should it be NUM_BUFS
size of size SIZE_BUF
? I imagine the NUM_BUFS
rows as the SIZE_BUF
column.
uint8_t * row = * (buffer + SIZE_BUF * rowIDX); Uint8_t element = * (line + elementIDX);
It compiles precisely and works, but it is cumbersome.
From the approach of array access:
uint8_t * row = & amp; Buffers [rowIDX]; Uint8_t element = line [elementIDX];
This gives a compiler warning when trying to pass a line in a function trying to reach its elements: Incompatible Pointer Type [enabled by default] Given logic of 'someFunc' 1]]
And the information statement about it: Expected 'uint8_t *', but logic 'UIT 8_T (*) [515] ] ''
where someFunc
has been declared: some Funk zero (uint8_t * row, uint16_t len);
I would appreciate some help in doing this, and if there is one there is readability of array brackets.
This should work:
Few functions from zero (uint8_t * Ptr) {}
with:
uint8_t buffers [NUM_BUFS] [SIZE_BUF]; Uint8_t * row = buffers [rowIDX]; Uint8_t element = line [elementIDX]; SomeFunc (line);
Comments
Post a Comment