mikroC
making it simple...
mikroC - C Compiler for Microchip PIC microcontrollers
This allows you to write loops which access the array elements in a sequence by means of incrementing pointer — in the last iteration you will have a pointer pointing to one element past an array, which is legal. However, applying the indirection operator (*) to a “pointer to one past the last element” leads to undefined behavior.
For example:
void f (some_type a[], int n) {
/* function f handles elements of array a; */ /* array a has n elements of some_type */
int i;
some_type *p = &a[0];
for (i = 0; i < n; i++) {
/* .. here we do something with *p .. */
p++; /* .. and with the last iteration p exceeds the last element of array a */
}
/* at this point, *p is undefined! */
}
Pointer Subtraction
Similar to addition, you can use operators
Also, you may subtract two pointers. Difference will equal the distance between the two pointed addresses, in bytes.
For example:
int | a[10]; |
|
|
int *pi1 = &a[0], *pi2 = &[4]; | |||
i = pi2 - pi1; | // | i equals 8 | |
pi2 | // | pi2 = pi2 - 4: pi2 now points to a[0] |
|
| page |
MikroElektronika: Development tools - Books - Compilers | 73 | |
|