Loading...
 
Skip to main content

System Workbench for STM32


France

Hi,

If you want to have the address after the testar array you must declare ptestar as a pointer to a pointer to int (as it is really the address of an array of 3 ints...):
Copy to clipboard
int **ptestar = &testar+1;
However, there is two things to note about your code:
  1. If you follow strictly the C standard, your C program is not standard compliant, as pointer arithmetic is restricted to stay inside a single C object, while you code use pointer arithmetic to point to a integer array located after the testar object
  2. If you want to be clearer that what follows testar is not another integer array, you may devlare ptestar as a pointer to void:
    Copy to clipboard
    void *ptestar = &testar+1;
  3. Obviously, the testar declaration must be an array definition that provides the compiler with the size of the array; it cannot be an external declaration of a variable size array as, in this case, the compiler will not have any way, at compile time, to know the size of the array: it will only be known at link time, too late for the compiler to use it.

Hope this helps,

Bernard (Ac6)