MISRA Discussion Forums
About Rule 5-0-15 and the size of the array - Printable Version

+- MISRA Discussion Forums (https://forum.misra.org.uk)
+-- Forum: MISRA C++ (https://forum.misra.org.uk/forumdisplay.php?fid=18)
+--- Forum: MISRA C++:2008 rules (https://forum.misra.org.uk/forumdisplay.php?fid=19)
+---- Forum: 6.5 Expressions (C++) (https://forum.misra.org.uk/forumdisplay.php?fid=134)
+---- Thread: About Rule 5-0-15 and the size of the array (/showthread.php?tid=1481)



About Rule 5-0-15 and the size of the array - Sebastien.Ashby@nxp - 25-03-2019

Hi,
I have a question about Rule 5-0-15: "Array indexing shall be the only for of pointer arithmetic".

Is the rule satisfied if the code referencing the array element has no knowledge of the dimensions of the array object at compile/link time?

For example, in the case where the argument passed to parameter "p2" of "my_fn" is an array whose size is defined at runtime?

Code:
void my_fn ( uint8_t * p1, uint8_t p2[ ] )
{
   uint8_t index = 0;
   uint8_t * p3;
   uint8_t * p4;
   *p1 = 0;
   ++index;
   index = index + 5;
   p1      = p1 + 5;   // Non-compliant – pointer increment
   p1[ 5 ] = 0;        // Non-compliant – p1 was not declared as array
   p3      = &p1[ 5 ]; // Non-compliant – p1 was not declared as array

   p2[ 0 ]     = 0;
   p2[ index ] = 0;        // Compliant
   p4          = &p2[ 5 ]; // Compliant
}
uint8_t a1[ 16 ];
uint8_t a2[ 16 ];

my_fn ( a1, a2 );
my_fn ( &a1[ 4 ], &a2[ 4 ] );



Re: About Rule 5-0-15 and the size of the array - misra cpp - 10-04-2019

Yes, knowledge of the array dimensions is not required