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...):
int **ptestar = &testar+1;However, there is two things to note about your code:
- 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
- If you want to be clearer that what follows testar is not another integer array, you may devlare ptestar as a pointer to void:
void *ptestar = &testar+1;
- 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,