website/_posts/cheri/code/ptrs_as_numbers.c

21 lines
464 B
C

#include <stdio.h>
int main() {
int magic = 9999;
(void)magic;
int arr[] = { 1234, 5678 };
int *x = &(arr[0]); // x is a pointer to first element of arr
printf("*x=%d\n", *x);
unsigned long x_addr = (size_t) x; // we're going to assume size_t = unsigned long here
x_addr += 4; // sizeof(int) == 4
x = (int *) x_addr;
printf("*x=%d\n", *x);
x_addr += 4;
x = (int *) x_addr;
printf("*x=%d\n", *x);
return 0;
}